打开一个程序然后等待它
Opening a program and then waiting for it
是否有通用方法 wait
执行以 fish 为背景的进程(如 open "foo"
)?据我所知,fish 中不存在 $!
(bash 中最后执行的子进程的 PID),因此您不能只是 wait $!
.
1)鱼成语是cmd1; and cmd2
或if cmd1; cmd2; end
.
2) 你应该会发现 bash 和 zsh 如果你执行 open ARG
也不会阻塞。那是因为 open
通常会使 运行 的程序后台运行,然后 open
退出。 shell 不知道 open
已将 "real" 程序置于后台。该行为的另一个示例是通过 vim -g
在 GUI 模式下启动 vim。在 macOS 上添加 -W
标志或在 Linux 上添加 -w
到打开命令,并将 -f
添加到 vim 命令。
这里的关键是 open
,即使它有背景,也不会 return 鱼将用来评估 and
运算符的信号,直到打开的东西发生问题过程。所以你得到了你正在寻找的行为。
是否有通用方法 wait
执行以 fish 为背景的进程(如 open "foo"
)?据我所知,fish 中不存在 $!
(bash 中最后执行的子进程的 PID),因此您不能只是 wait $!
.
1)鱼成语是cmd1; and cmd2
或if cmd1; cmd2; end
.
2) 你应该会发现 bash 和 zsh 如果你执行 open ARG
也不会阻塞。那是因为 open
通常会使 运行 的程序后台运行,然后 open
退出。 shell 不知道 open
已将 "real" 程序置于后台。该行为的另一个示例是通过 vim -g
在 GUI 模式下启动 vim。在 macOS 上添加 -W
标志或在 Linux 上添加 -w
到打开命令,并将 -f
添加到 vim 命令。
这里的关键是 open
,即使它有背景,也不会 return 鱼将用来评估 and
运算符的信号,直到打开的东西发生问题过程。所以你得到了你正在寻找的行为。