Почему мой подпроцесс STDOUT ничего не печатает под nohup

У меня код выполнен следующим образом

$ python mycode.py param1 param2 

Это производит вывод, используя подпроцесс внутри mycode.py:

import subprocess
paramlist = ['othercodes.py','infilel.txt']

p = subprocess.Popen(paramlist,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = p.communicate()

# out is empty under nohup
print out

У меня нет проблем с получением полного результата с помощью этих команд:

 $ python mycode.py  > output.txt 
 $ python mycode.py   >> output.txt 

Но когда я делаю одно из этого, я получаю пустой результат в output.txt:

 $ nohup python mycode.py   > output.txt &
 $ nohup python mycode.py   >> output.txt &
 $ nohup python mycode.py   >> output.txt 2>&1  

Как правильно это сделать?

Обновление:

Я исправил проблему. Как указал Чарльз Даффи, проблема в othercodes.py, В частности эти строки:

        # # If there's input ready, do something, else do something
        # # else. Note timeout is zero so select won't block at all.

        # if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        #     infile = sys.stdin.readline().strip()
        #     args.append(infile)

Как только я закомментировал последние 3 строки, mycode.py тогда работает нормально.

0 ответов

Другие вопросы по тегам