farmer-logo.gif (14959 bytes) cshell-logo.gif (19625 bytes)
ch-3.gif (10141 bytes)
main-b.gif (271 bytes)
 

 

3-8-10 exec 指令

指令語法 exec command

內建指令 exec 的功能與用途是相當特殊的。如果使用 exec 來執行“指令”,在“指令”執行完畢結果輸出之後,原先的 C shell 也會跟著終結。來看下面的例子:

6 % exec date
Sat Oct 15 11:29:05 CST 1994
login:

當我們在 login shell 中以 exec 來執行指令 date,在指令結果輸出後, login shell也終結。換句話說,就是執行完指令後便自動 logout。因為以 exec 執行指令時,並不會另外呼叫 fork() 這個 system call,所以不會產生新的處理程序(process)。而 exec 所執行“指令”的處理程序會“佔用”原來呼叫 exec 內建指令的處理程序,而且程序號碼(PID)及環境變數等執行條件均不會改變。就是因為這個會產生這種“代換”的動作,所以當 exec 所執行的“指令”結束後,便無法再回到原來的執行環境中了。這便是在 login shell 中執行此內建指令後會 logout 的原因。所以千萬別在你的 login shell 中以 exec 來執行指令。如果你還不想 logout 的話!

其實在指令行模式下會使用 exec 來執行指令的可能性是相當小。因為這個指令大都是運用在“.login”檔案或 C shell 程式設計中。譬如說一個使用者想要對自己的簽入過程加上一些選項,用來執行自己的程式(如備份資料或清理舊資料等)。而且在執行這些程式後,並不希望再進入到系統中。也就是說進入這些特別的選項,執行完特殊的工作後便要離開系統了。在做法上,你便可在“.login”檔案中以這個內建指令 exec 來取代一般的執行方式。來達到你所要的特殊執行效果。

當然你也可以利用這個內建指令 exec 的執行特性,在你最後要離開系統前,以它來執行結束前的最後工作,它會為你自動 logout。這倒也相當方便。


mail.gif (2925 bytes)

b-line.gif (2092 bytes)