首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待wine结束运行

等待wine结束运行
EN

Stack Overflow用户
提问于 2011-08-26 22:04:42
回答 4查看 2.1K关注 0票数 3

我当前的脚本如下所示:

代码语言:javascript
复制
cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
wine start "C:\foo$$.txt"
wineserver -w
echo "Wine is done!"

当一次只有一个程序在酒中运行时,它工作得很好。但是,如果我再次运行此脚本,在第一个程序完成之前,两个脚本都将等待对方程序退出。

这不起作用:

代码语言:javascript
复制
cd ~/.wine/drive_c/
echo "test123" > foo$$.txt
$(wine start "C:\foo$$.txt") &
wait ${!}
echo "Wine is done!"

因为它将在您关闭文本编辑器之前退出。

我需要使用start命令,因为我希望使用默认的编辑器/查看器运行文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-07 22:01:36

wineserver有一个--wait标志,可以用来准确地做到这一点。

但是,如果您一次运行多个程序,它将等待所有程序完成。

票数 3
EN

Stack Overflow用户

发布于 2012-08-07 18:50:32

要等待wine启动的进程退出,可以通过管道将其输出传递给另一个程序。在我的系统上,以下内容达到了预期的效果:

代码语言:javascript
复制
wine "program.exe" | cat
echo "program.exe has finished"

如果您想异步等待:

代码语言:javascript
复制
wine "program.exe" | cat & pid=$!
# ...
wait $pid
echo "program.exe has finished"
票数 3
EN

Stack Overflow用户

发布于 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.exeplugplay.exewinedevice.exe等服务会继续运行几秒钟,而wineserver --wait也会一直等待,直到这些服务退出。

其中一些服务保留状态,并在退出时将其状态(和注册表)写入磁盘。因此,如果您想要备份或删除您的wine前缀,请确保等待这些服务退出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7205856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档