1

Можно ли использовать командную строку (или python) для постепенного завершения работы программы с графическим интерфейсом?

Например, можно ли будет постепенно завершать работу программ (например, нажимать клавишу X в окне, не прерывая процесс), предоставляя пользователю возможность сохранять несохраненные файлы до завершения работы программы (например, gedit?)

5 ответов5

2

Это возможно с помощью wmctrl (упакованного в ubuntu), который отправляет сигналы в EWHM/NetWM-совместимые (большинство) оконные менеджеры.

Закрытие Кейт грациозно будет выполнено командой:

wmctrl -c kate
1

Я думаю, что слово «изящно» может лучше описать тип выключения, который вы ищете?

А вы пробовали просто killall processname или kill pidnumber? (где имя процесса или pidnumber заменяются именем или PID процесса, который вы пытаетесь завершить)

По умолчанию kill отправляет сигнал TERM, который приложение может рассматривать как изящный запрос на завершение работы (хотя технически это зависит от разработчика, что они делают с сигналом TERM).

0

Команда выключения позволяет вам указать льготный период, а также сообщение о выключении (по вашему выбору), чтобы предупредить пользователей о необходимости сохранить свою работу.

0

Кажется маловероятным, что есть механизм для закрытия отдельного приложения, кроме как убить его.

Вероятно, лучше рассматривать приложение как черный ящик. Мы могли бы убить его, но трудно влиять на его внутреннюю работу тонкими способами.

И извне, изящное завершение работы (сохранение файлов и т.д.) Очень тонкое.

0

Если вы пишете программу, лучший способ сделать это - захватить сигналы от операционной системы и указать в программе, как вы хотите, чтобы программа их обрабатывала. Затем вы можете использовать команду kill (к сожалению, IMO), чтобы отправить соответствующий сигнал программе, чтобы он остановился так, как вы хотите. (К сожалению, я никогда не делал этого с Python, но похоже, что вы можете использовать os.kill для отправки сигнала.) Конечно, вы могли бы сделать то же самое, если бы это была не написанная вами программа, но вы знаете (или узнаете, возможно, методом проб и ошибок), что она обрабатывает определенный сигнал желаемым способом.

У меня нет Ubuntu, но вы можете получить список доступных сигналов, набрав man signal в командной строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .