打开一个程序,然后等待它

时间:2016-07-09 19:57:18

标签: wait fish

对于已执行过程的wait是否有通用的方法,即鱼类背景(如open "foo")?据我所知,$!(bash中最后执行的子进程的PID)不存在于fish中,所以你不能wait $!

1 个答案:

答案 0 :(得分:3)

1)鱼的成语是cmd1; and cmd2if cmd1; cmd2; end

2)如果你执行open ARG,你会发现bash和zsh也没有阻止。这是因为open通常会影响正在运行的程序,然后open退出。 shell不知道open已将"真实"程序在后台。该行为的另一个例子是通过vim -g在GUI模式下启动vim。将macOS上的-W标志或Linux上的-w添加到open命令,将-f添加到vim命令。

这里的关键是open,即使它是背景,也不会返回一个信号,用于评估and运算符,直到打开的进程发生某些事情。所以你得到了你正在寻找的行为。