Я использую Ubuntu 10.10, и у меня есть программа Python (Mnemosyne), что я синхронизирую файлы данных с помощью Dropbox. Вот мой проблемный сценарий. Я оставляю программу, работающую дома, и перехожу к работе, но если я открываю программу на работе и работе над нею, файл данных изменяется, и я освобождаю свой успех дома, когда я выхожу (она автоматически сохраняет) при выходе.
Я думал, что мог создать задание крона для автоматического закрытия Mnemosyne каждое утро независимо от меня не забывающий делать это или нет, но если я использую, закрывают программу, из которой это выходит, не сохраняя файл данных, и я заканчиваю с tmp файлом и сообщением об ошибке, когда я перезапускаю его. Есть ли лучший способ отправить, сигнал выхода к этой программе, эмулирующей меня нажимающий файл>, выходят из пункта меню.
Попытайтесь использовать более низкий сигнал уничтожения для программы такой как 3 (SIGQUIT).
Как насчет того, чтобы запустить программу на экранной сессии дома, таким образом, можно снова соединиться с ним на работе и иметь полный контроль над тем, что происходит?
Корректный ответ на это зависит от того, что поддерживает Ваша программа. Программа хорошего поведения должна сохранить всю работу и оконечный корректно при получении ТЕРМИНА сигнал, который является значением по умолчанию в уничтожении, таким образом, я предполагаю, что это - то, которое Вы пробовали. Если программа не терпит это и не предлагает никакой другой путь, например, по сокету управления, можно не повезти. В этом случае попытайтесь использовать экранную сессию или исправьте программу или используйте другую.
Это является очень зависящим от приложения. Если авторы mnemosyne не предвидели этот вид ситуации и конкретно создали, "сохраняют и выходят при получении сигнала X" из поведения, то Вы в значительной степени застреваете с необходимостью управлять ее пользовательским интерфейсом для выполнения этого.
Однако, как уже предложено, лучшее решение состояло бы в том, чтобы, вероятно, выполнить mnemosyne под некоторой формой совместно использующей дисплей утилиты так, чтобы можно было получить доступ к той же сессии от обоих мест вместо того, чтобы завершить работу его и перезапустить каждый раз, когда Вы перемещаете. VNC является настольным параметром совместного доступа GUI, с которым я являюсь самым знакомым, но существует, вероятно, способ заставить X позволять Вам сделать это на прикладном уровне (в противоположность, чем целый рабочий стол) и существует много других опций там в эти дни, которые могут работать лучше на Вас.
Если это было приложение командной строки, screen
работы замечательно (я ежедневно использую его для просто этой цели, предоставляя мне доступ к единственному экземпляру mutt
от нескольких местоположений), но я не думаю, что это обрабатывает приложения для GUI (страница справочника, кажется, не ссылается на "GUI" или "X").
Как правило единственным способом закрыть программу является сигнал. Как другие сказали, если это не хорошо ответит на уничтожение по умолчанию (который отправляет SIGTERM), то это вряд ли будет иметь надлежащий обработчик для других сигналов также. Нет никакого 'более доброго более нежного' сигнала. Все сигналы кроме SIGKILL рассматривают процесс то же, выполняя обработчик, если это имеет один, или уничтожение приложения.
Тем не менее как gui приложение, существует очень маленький шанс, который оно связывает с библиотекой, что можно управлять приложением. Можно попытаться видеть, можно ли отправить, это обменивается сообщениями с dcop или d-шиной. См. http://dbus.freedesktop.org/doc/dbus-tutorial.html