سؤال

I'm running some C++ code (8 independent processes running on Ubuntu with 8 cores).

I'm launching the C processes using python:

def runC():
    numThreads = multiprocessing.cpu_count()
    threads = []
    for i in range(numThreads):
        args = ("./cprogram", arg1,arg2,arg3)
        popen = subprocess.Popen(args, stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        threads.append(popen)

    for t in threads:
       t.wait()
       output = t.stdout.read()
       err = t.stderr.read()
       if len(output) > 0:
          print "output: " + output
       if len(err) > 0:
          print "err: " + err

I keep getting "defunct" processes. What does that mean? Why did this happen to me?

هل كانت مفيدة؟

المحلول

Turns out it's the t.wait() that is causing the zombie process. Depending on the order that the jobs finish, there will be some in a zombie state until the t.wait() gets around to them. It's not really a problem, which is what I wanted to be sure of.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top