Я использую скрипт python в качестве загрузочного устройства, чтобы запустить длинную службу java.Начать процесс без вывода stdout
call = [ "java", "-cp", ... ]
with open(os.devnull, 'w') as fnull:
subprocess.Popen(call, stdout=fnull)
print "Service started."
Но когда процесс python завершился, я все равно получаю вывод stdout из процесса java. Я предполагаю, что это связано с тем, что python закрыл мой fnull
, поэтому он возвращается к нормальному стандарту.
Как я могу достичь того, чего хочу?
EDIT: На стороне примечания было бы неплохо получить stderr, если это вообще возможно, но нет, если оно добавит сложности.
EDIT2: Казалось бы, я очень придурок, это было написано stderr.
Вы уверены, что это действительно 'stdout', а не' stderr' вы видите? – FatalError
'stdout' указывает на'/dev/null', вы не можете его видеть. Ваш Java-процесс, вероятно, отправляет сообщения в 'stderr'. –
Как только дочерние процессы вилки, не имеет значения, что происходит с дескриптором родительского файла. Ребенок получает/dev/null. Добавьте свой голос в гипотезу stderr. – tdelaney