Using subprocess to find out when a process ends

I wish to sequentially run some c scripts that fork their own processes (in a new command line window) and give the "Press any key to continue..." when they are completed. Technically, it is a special compiler. It pops up with acommand line window and tells me whether the compile was successful or not. But that command line window forks new processes to compile, which are making this return 0 before it should..

My first attempt at this was

    process = subprocess.Popen(cmd)
    process.wait()

while iterating over each file. Unfortunately, this does not wait for the "Press any key to continue..." and blows up in my face. It seems that the wait() call is passed when an internal process is completed (which I have no access to).

How can I, instead, wait for "Press any key to continue..."? It's also printing some other information before the press any key to continue line..

Currently, this is what my code is:

            process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
            completed = False
            while not completed:
                if process.poll() is not None:
                    completed = True

            print "communicating"
            process.communicate("k")
            print "communicated"

Answers


You can use subprocess.poll to check the status without blocking, and subprocess.communicate to send information to the subprocess.


Need Your Help

Problems with transparency when creating a texture from a mixture of textures with SDL_2?

transparency sdl-2

I am trying to create a texture from several textures, but it seems that I have a problem setting the transparency:

Properties.Settings.Default.variableName = textboxt.Text

c# winforms

private void Enable(TextBox temp, String system)