У меня странная проблема. Я запускаю python программу с кодом вроде:
# file.py
some stuff
some stuff...
os.system(". ./script.sh; function_1")
и содержимым скрипта. sh:
function_1()
{
kill -2 $(pidof python file.py)
python file2.py
}
И все работает хорошо и c, но после file2 завершает свою работу, терминал остается таким же, как и в этой программе. Я должен вручную нажать Ctrl + C. Я попытался добавить в сценарий te. sh такие команды, как: kill -2 $ (pidof python file.py) или даже kill все python, но это тоже не сработало.
Конечно, когда я запускаю file2.py вручную, он выполняет свою работу и сразу после этого освобождает терминал.
После этой части скрипта:
kill -2 $(pidof python file.py)
терминал действительно освобожден, поэтому это должно быть возможно и с file2.py.
Возможно, терминал не освобожден из-за сценария, а не python на самом деле. Тем не менее я не знаю, как это преодолеть. Команда:
killall bash
полностью выходит из терминала - что не является хорошим решением.
ОБНОВЛЕНИЕ: Может быть важно: когда я просто печатаю в терминал. script.sh; function_1 запускается и завершается, как и ожидалось.
Я думаю, что проблема не связана с python, потому что я добавил
printf "test message" -> after python file2.py
, и он показывается. Но терминал все еще остается «занятым»
Еще одно обновление: когда я добавил команду в скрипт, чтобы тот же файл снова запускался
kill -2 $(pidof python file.py)
python file.py
Он запускается и сразу же показывает ошибку "Ошибка EOF "
Я что-то упустил?