У меня есть две определенные функции, foo
и bar
, которые запускают pexpect
, который вызывает скрипт из командной строки, используя pexpect.spawn
. Затем он просто отправляет control-c, используя pexpect sendcontrol
и close
, чтобы сообщить запущенному сценарию о завершении работы, а затем завершить работу объекта. После запуска программы объект все еще работает в памяти, и похоже, что control-c и/или child.close
никогда не достигали foo()
Сценарий должен завершить мой порожденный объект, но вместо этого моя логика if
в bar(child)
, похоже, не оказывает никакого влияния на объект, созданный в foo()
Вот код:
def foo():
child = pexpect.spawn ('./script.sh')
return child
def bar(child):
if child.isalive():
child.sendcontrol('c')
child.close()
if child.isalive():
print 'Child did not exit gracefully.'
else:
print 'Child exited gracefully.'
a = foo()
bar(a)
Программа всегда завершается выводом сообщения "Ребенок успешно завершил работу" и оставляет мой script.sh
работающим в фоновом режиме.
Этот код здесь работает, хотя:
def bar(child):
child.sendcontrol('c')
который нормально взаимодействует с объектом, созданным в foo()
, но по какой-то причине мой другой код с логикой if
правильно запускает if
, но ничего не делает с моим объектом