В ожидании вина, чтобы закончить бежать - PullRequest
3 голосов
/ 26 августа 2011

Мой текущий скрипт выглядит следующим образом:

cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
wine start "C:\foo$$.txt"
wineserver -w
echo "Wine is done!"

, который прекрасно работает, когда в Wine одновременно работает только одна программа.Однако, если я выполню это во второй раз, прежде чем будет завершена первая программа, оба сценария будут ожидать завершения работы других программ.

Это не работает:

cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
$(wine start "C:\foo$$.txt") &
wait ${!}
echo "Wine is done!"

, как это будетвыйдите, прежде чем закрыть текстовый редактор.

Мне нужно использовать команду start, потому что я хочу, чтобы файл запускался с редактором / средством просмотра по умолчанию.

Ответы [ 3 ]

2 голосов
/ 07 августа 2012

wineserver имеет флаг --wait, который можно использовать именно для этого.

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

0 голосов
/ 07 августа 2012

Чтобы дождаться завершения процесса, запущенного Wine, вы можете передать его вывод другой программе. На моей системе следующее достигает желаемого эффекта:

wine "program.exe" | cat
echo "program.exe has finished"

Если вы хотите ждать асинхронно:

wine "program.exe" | cat & pid=$!
# ...
wait $pid
echo "program.exe has finished"
0 голосов
/ 26 августа 2011

В результате wine просто просит wineserver запустить программу и завершить работу, и я не нашел хорошего механизма для получения уведомлений от wineserver о процессах, которые она запускает.

MyРекомендуется дождаться завершения процесса, запущенного wineserver, используя один из методов в Как ожидать выхода из дочерних процессов , но вам нужно знать его PID.Возможные идеи: запустить wineserver -f -d | grep init_thread( и получить оттуда PID, но я не вижу простого способа узнать, что есть, чтобы избежать гоночных условий и игнорировать шум;или попробуйте найти ваш процесс в выводе ps, но он уродлив и определенно не надежен.

Если ничего лучше, вы можете предложить добавить такую ​​функцию разработчикам Wine (вероятно, как флаг wine).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...