%20%E5%A6%82%E4%BD%95%E4%BB%A5%E9%98%BB%E5%A1%9E%E6%A8%A1%E5%BC%8F%E5%95%9F%E5%8B%95%E5%B7%B2%E5%9F%B7%E8%A1%8C%E7%9A%84%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E7%9A%84%E5%AF%A6%E4%BE%8B%EF%BC%9F.png)
為了解釋我使用 Firefox,但其他應用程式也會發生這種情況,腳本如下:
$ cat ff.sh
#!/bin/sh
firefox http://superuser.com/
echo "$?"
假設 Firefox 已關閉,當我運行時
$ ./ff.sh
該腳本會被阻止,直到我關閉 Firefox。只有在那之後我才得到退出代碼。
0
$
現在假設 Firefox 已經在運行,當我運行腳本時,它會打開一個新的 Firefox 標籤並運行到最後。 (Firefox 繼續運作。)
$ ./ff.sh
0
$
無論啟動條件如何,如何實現與第一個範例中的行為相同的行為?基本上我想實現相反的目標
$ cmd &
答案1
看起來好像是異步運行的,但實際上並非如此。
當 Firefox 啟動時,它會檢查現有實例,如果找到,它會將控制權委託給現有實例並自行結束。因此造成混亂。