Закройте терминал Терминатора, открытый из bash, когда программа в нем завершается - PullRequest
0 голосов
/ 07 июня 2019

У меня есть правило udev, которое вызывает скрипт всякий раз, когда я вставляю определенное USB-устройство. Этот скрипт запускает терминал с помощью следующей команды:

terminator -e "...some_program" & exit

(Возможно, это также был xterm, насколько я могу судить, не имеет значения.)

Когда «some_program» заканчивает делать то, что должен, он выходит (изнутри этой программы, а не из bash), но терминал терминатора остается открытым, если только я Ctrl + C это, в этом случае он закрывается. Но я не хочу Ctrl + C , вот и весь смысл.

У меня есть еще одно правило udev, которое действует при извлечении USB-устройства. Но это правило не сработает, пока терминал, который был открыт из 'insert usb rule' закрывается (хотя я использовал & exit после запуска скрипта из 'insert usb rule')

У меня больше нет идей, и я искал решение все выше и ниже. Но ничего не помогло.

  • Я попытался отправить SIGINT изнутри some_program вместо использования exit (1), это не сработало. Программа завершилась, но терминал остался открытым.

  • Я попытался убить терминал, получив его PID и убив его. Это не сработало.

  • Я попытался открыть другой терминал и убить PID оттуда, это не сработало.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Решил это.нет необходимости использовать 'bash -c'.'some_program' - это узел ROS, поэтому все, что мне нужно было сделать, это убить Росмастера ...

$ killall -9 Росмастер

, и теперь он работает.

0 голосов
/ 07 июня 2019

Возможно, вы захотите попробовать это:

terminator -e "bash -c 'yourcommand'"

По крайней мере, когда я вызываю ls, он автоматически закрывается:

# this closes automatically:
terminator -e "bash -c 'ls'"
# to test, this closes when the less command is ended (eg. by hitting q):
terminator -e "bash -c 'ls | less'"

Очевидно, терминатор не инициализирует свою собственную оболочку таким образом, и как только команда, переданная с параметром -c, заканчивается, оболочка завершается, и терминатор автоматически закрывает окно.

...