Ожидайте закрытия сценария оболочки

У меня есть две определенные функции, 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, но ничего не делает с моим объектом


person Node TX    schedule 30.12.2012    source источник


Ответы (1)


Я думаю, что моя проблема заключалась в том, что мой отступ в моем файле .PY был отключен на символ.

person Node TX    schedule 30.12.2012