Kill forked processes

K

kmkz

Hi,

I have a program A that forks off two other programs, B and C. I need B
and C to both terminate if A is closed, but by using the
subprocess.call() method this seems to not be the case; I can shut down
the "black box" that is program A and B/C will still stay up.

How can I achieve the desired behavior?

Thanks,
Evan
 
S

Steve Juranich

kmkz said:
I have a program A that forks off two other programs, B and C. I need B
and C to both terminate if A is closed, but by using the
subprocess.call() method this seems to not be the case; I can shut down
the "black box" that is program A and B/C will still stay up.

How can I achieve the desired behavior?

You'll probably need to take a look at the `signal' and `atexit' modules.
These will allow you to write hooks that will get called when your A script
is terminated either by a signal or by reaching one of the "natural"
endpoints.
 
K

kmkz

Thank you for your reply. I will certainly look into those.

Another question:

Lets say my script A executes two other scripts, B and C. B is a Python
file compiled into an exe and uses the regular black box. C, however,
is a C++ program that I did not write, and have no access to (besides
executing it. ie, i don't have its source). I would like to fork off
the process B and C from A, but make B and C invisible and unable to be
shut down by the user. This way, they have to kill process A.
Unfortunately, this brings me back to the problem I posted above: how
to make the subprocesses dependant on its parent process. Since I have
no access to the C++ program's source I need to come up with a better
way of forcing the OS to "see" process B as being inside of process C
and then shut it down, deallocate its memory, close its pipes, etc...

Any ideas?

I'll be willing to PayPal $10 to anyone who completely figures this out
for me :)
 
S

Steve Juranich

kmkz said:
Lets say my script A executes two other scripts, B and C. B is a Python
file compiled into an exe and uses the regular black box. C, however,
is a C++ program that I did not write, and have no access to (besides
executing it. ie, i don't have its source). I would like to fork off
the process B and C from A, but make B and C invisible and unable to be
shut down by the user. This way, they have to kill process A.
Unfortunately, this brings me back to the problem I posted above: how
to make the subprocesses dependant on its parent process. Since I have
no access to the C++ program's source I need to come up with a better
way of forcing the OS to "see" process B as being inside of process C
and then shut it down, deallocate its memory, close its pipes, etc...

Any ideas?

Again, the atexit and signal modules will be your friend.
I'll be willing to PayPal $10 to anyone who completely figures this out
for me :)

1) I wouldn't want to spoil the fun.
2) My time writing code costs much more than that. :)
 
K

kmkz

I didn't mean that you'd have to write it for me, I meant that if what
you said works (atexit, signal) I will paypal you $10 for your generous
contribution to my project.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,577
Members
45,054
Latest member
LucyCarper

Latest Threads

Top