Как не дать поводу связаться с другими инстанциями?

526
Denilson Sá Maia

Хорошо, эту проблему довольно сложно понять без контекста:

Когда мы запускаем Evince, он проверяет, запущен ли другой экземпляр.

  • Если он есть, evinceкоманда завершается немедленно, сразу после передачи параметра в работающий экземпляр

  • Если другой экземпляр не запущен, будет запущен новый, и evinceкоманда будет ожидать выхода из этого нового экземпляра.

Хотя такое поведение довольно приятно, оно не полезно для сценариев оболочки. Зачем? Потому что у меня есть скрипт, который записывает временный .psфайл, вызывает программу просмотра PS / PDF и автоматически удаляет временный .psфайл после выхода из программы просмотра. К сожалению, этот сценарий работает только в том случае, если evince ранее не запускался (если evince выполнялся, файл удаляется слишком быстро).

Я не хочу добавлять дополнительную сложность к этому сценарию. Это должно быть простым, потому что я могу заменить evince на xpdf, gv или что-то еще.

Я ожидал появления какого-то параметра командной строки (похожего -fна vim и gvim), но боюсь, что такой опции нет. Написание сценария оболочки evinceможет быть хорошим решением, но этот сценарий должен работать правильно во всех случаях (если evince был запущен, а если нет).

Есть идеи? (Я знаю ... это довольно сложно)

2
I can't reproduce that. If I run evince foo.pdf; evince bar.pdf I get two different windows and two different processes. Peter Eisentraut 13 лет назад 0
Да, у меня тоже два окна. Вы запускаете эти команды на терминале? Вы заметите, что первое будет ждать, пока все окна Evince закроются, а второе немедленно вернется в оболочку. Denilson Sá Maia 13 лет назад 0
Может быть, теперь я могу воспроизвести то, что вы сказали, Питер Айзентро. Похоже, это поведение изменилось в версии 2.30 Denilson Sá Maia 13 лет назад 0

1 ответ на вопрос

0
Denilson Sá Maia

Кажется, что предыдущие версии Evince (до 2.28) имели поведение, которое я описал в своем вопросе. К счастью, версия 2.30 изменила это поведение на то, что я хотел.

Ответ таков: обновите Evince до версии 2.30 или новее.

Похожие вопросы