os.fork on linux defunct

Ray rui.vapps at gmail.com
Fri Jul 30 18:09:28 EDT 2010


On Jul 30, 6:03 pm, Ray <rui.va... at gmail.com> wrote:
> I'm running python 2.4 on linux. I use python os.fork run tcpdump, but
> after I kill the forked process (tcpdump) in linux it shows defunct
>
> here is the code:
>
> #!/usr/bin/python
> import time, os
> class Test:
>     def fork(self):
>         self.pid=os.fork()
>         if self.pid=0:
>             args=['tcpdump', '-i', 'eth0', 'port', '80' '']
>             os.execl("/usr/sbin/tcpdump", *args)
>             os._exit(0)
>     def kill(self):
>         os.kill(self.pid, 15)
> if __name__=='__main__':
>     while True:
>         test=Test()
>         test.fork()
>         time.sleep(2)
>         test.kill()
>         time.sleep(30)
>
> after I call kill() it will kill tcpdump (capture will stop) but on
> linux, ps shows tcpdump as defunct process
> what am I missing?
>
> thanks for any help.

I think I found it. need to call os.wait()




More information about the Python-list mailing list