0
有沒有一種通用的方式wait
爲一個執行的過程,魚的背景(如open "foo"
)?據我所知,$!
(bash中最後執行的子進程的PID)在魚中不存在,所以你不能只用wait $!
。打開一個程序,然後等待它
有沒有一種通用的方式wait
爲一個執行的過程,魚的背景(如open "foo"
)?據我所知,$!
(bash中最後執行的子進程的PID)在魚中不存在,所以你不能只用wait $!
。打開一個程序,然後等待它
1)魚的成語是cmd1; and cmd2
或if 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
操作符的信號,直到發生打開的過程時發生某些情況。所以你得到你正在尋找的行爲。
「IF_OK_CMD」是什麼意思?什麼是「開放」(即哪個操作系統)?我很困惑,爲什麼當你從不把它放在後臺時,你想要「流程」。默認情況下,進程在前臺執行。 「open」是否可能退出? –
我會編輯它更清晰。 –
感謝您的編輯。我懷疑發生了什麼事情是'open'正在退出 - 它沒有後臺,它只是完成打開文件,因此退出。如果這是OS X,也許你想'打開-W'? –