我当前的脚本如下所示:
cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
wine start "C:\foo$$.txt"
wineserver -w
echo "Wine is done!"当一次只有一个程序在酒中运行时,它工作得很好。但是,如果我再次运行此脚本,在第一个程序完成之前,两个脚本都将等待对方程序退出。
这不起作用:
cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
$(wine start "C:\foo$$.txt") &
wait ${!}
echo "Wine is done!"因为它将在您关闭文本编辑器之前退出。
我需要使用start命令,因为我希望使用默认的编辑器/查看器运行文件。
发布于 2012-08-07 22:01:36
wineserver有一个--wait标志,可以用来准确地做到这一点。
但是,如果您一次运行多个程序,它将等待所有程序完成。
发布于 2012-08-07 18:50:32
要等待wine启动的进程退出,可以通过管道将其输出传递给另一个程序。在我的系统上,以下内容达到了预期的效果:
wine "program.exe" | cat
echo "program.exe has finished"如果您想异步等待:
wine "program.exe" | cat & pid=$!
# ...
wait $pid
echo "program.exe has finished"发布于 2020-04-06 05:01:48
wine <program>会一直等到程序退出。wine start program不需要。
摘要:
wine <program>会一直等到程序完成。我建议在不使用waiting.wine start \wait <program>的情况下使用这个method.wine start <program>退出,也要等到程序是finished.wineserver --wait,然后等待所有程序、和Wine中的所有服务都完成。此命令本身不会启动任何程序,但会等待现有程序和服务。在最后一个程序结束后,services.exe、plugplay.exe和winedevice.exe等服务会继续运行几秒钟,而wineserver --wait也会一直等待,直到这些服务退出。
其中一些服务保留状态,并在退出时将其状态(和注册表)写入磁盘。因此,如果您想要备份或删除您的wine前缀,请确保等待这些服务退出。
https://stackoverflow.com/questions/7205856
复制相似问题