Я сделал класс, чтобы запускать некоторые программы и убивать, когда я делал вещи. Но, похоже, он повесился. Он имеет функции настройки и разрыва и вары для хранения процессов.Запустите подпроцесс и сохраните, чтобы убить, когда закончили
На данный момент меня не интересует stdout & stderr. Я просто подумал, что мне нужно включить это.
class ServerClient(object):
def __init__(self):
self.server_process = None
self.client_process = None
def setUp(self):
self.server_process = subprocess.Popen(
['python', 'servlet.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
self.client_process = subprocess.Popen(
['python', 'client.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
time.sleep(2)
def tearDown(self):
if self.server_process is not None:
try:
print "Killing Server"
self.server_process.terminate()
self.server_process.wait()
except OSError:
pass
self.server_process = None
if self.client_process is not None:
try:
print "Killing Client"
self.client_process.terminate()
self.client_process.wait()
except OSError:
pass
self.client_process = None
if __name__ == '__main__':
sc = ServerClient()
sc.setUp()
# Do stuff
sc.tearDown()
Как вы используете свой класс? Где он держится? – Daniel
Если на другом конце трубы нет считывателя, процесс будет ждать, пока он не появится. Вы не показываете код, который читает трубу. – cdarke
Я ответил на оба из вышеперечисленных вопросов в редакциях. – user3480774