2016-07-09 57 views
0

有沒有一種通用的方式wait爲一個執行的過程,魚的背景(如open "foo")?據我所知,$!(bash中最後執行的子進程的PID)在魚中不存在,所以你不能只用wait $!打開一個程序,然後等待它

+1

「IF_OK_CMD」是什麼意思?什麼是「開放」(即哪個操作系統)?我很困惑,爲什麼當你從不把它放在後臺時,你想要「流程」。默認情況下,進程在前臺執行。 「open」是否可能退出? –

+0

我會編輯它更清晰。 –

+2

感謝您的編輯。我懷疑發生了什麼事情是'open'正在退出 - 它沒有後臺,它只是完成打開文件,因此退出。如果這是OS X,也許你想'打開-W'? –

回答

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操作符的信號,直到發生打開的過程時發生某些情況。所以你得到你正在尋找的行爲。

相關問題