談談對 NIX中對system 函式的理解

2021-05-23 20:12:59 字數 776 閱讀 1161

如在《programming perl》中對system()函式的說明,本函式執行任何系統中的程式並返回該程式的退出狀態---而不是它的輸出。

要捕獲命令列上的輸出,應該用反引號或者qx//。因為system和反引號阻塞sigint及sigquit,

所以向那些正在這樣執行的程式傳送這些訊號之一(比如通過control-c)時不會中斷主程式。

但是你執行的另乙個程式的確會受到這個訊號。請檢查的返回值,判斷你執行的程式是否正常退出。

要獲取實際的退出值,要除以256或者右移8位。因為最低7位標識殺死該程序的訊號號碼,

而第八位標識該程序是否轉儲了核心。可以通過$?($child_error)來檢查所有失敗的可能性,如:

$exit_value = $? >> 8;

$exit_signal = $? & 127;

$dump_core = $? & 128;

《unix環境高階程式設計》中有對system()函式實現的詳細說明,它有3種返回值:

1)如果fork失敗或者waitpid返回除eintr之外的出錯,則system返回-1,而且errno中設定了錯誤型別值;

2)如果exec失敗(表示不能執行shell),則其返回值如同shell執行了exit(127)一樣;

3)否則所有三個函式(fork,exec和waitpid)都執行成功,並且system的返回值是shell的終止狀態,其格式已在waitpid中說明。

《unix環境高階程式設計》這本書相當經典,有時間常常查閱總會得到新的理解體會,感謝stevens和rago給我們的寶貴經驗。

System類對IO的支援

system類有三個靜態成員常量 public static final printstream err public static final printstream out public static final inputstream in我們平時經常用到的system.out.println...

談談對IT學習的態度

進入it若干年,雖然沒有上過什麼有用的課,但我還是有些心得的,其實也就是拿物理的學習方法來學習it。總結如下 1 永遠不要盲目相信別人的結論性知識 不同的環境下,可能有不同的結論,哪怕是書本上的知識,也不能盲目相信。就拿清華的資料結構書籍來說,說堆排序對於記錄數較少的檔案並不值得提倡,但對於n較大的...

談談對MVC的理解

mvc是一種設計模式,它把應用程式拆分為模型物件,檢視物件,控制器物件三大部分.一.模型物件 模型物件封裝了應用程式的資料,模型物件更改時,會通知控制器物件,控制器物件更新相應的檢視物件.二 檢視物件 檢視物件應用程式中使用者所看得到的,其主要目的是顯示應用程式中模型物件的資料,在應用程式中,所有的...