從man 3 system
在Linux:
返回值
返回的值是1的錯誤(例如,叉(2)失敗),以及以其他方式命令的返回狀態。後者的返回狀態採用wait(2)中指定的格式。
然後從man 2 wait
在Linux上:在INT
如果狀態不爲空,等待()和waitpid函數()存儲狀態信息,它指向。這個整數可以用下面的宏來檢查(它將整數本身作爲參數,而不是指向它的指針,就像在wait()和wait-pid()!中所做的那樣):
WIFEXITED(status)
如果孩子正常結束,即通過調用exit(3)或_exit(2)或從main()返回,則返回true。
WEXITSTATUS(狀態)
返回孩子的退出狀態。這包括子進程在調用exit(3)或_exit(2)時指定的status參數的最低有效8位或作爲main()中return語句的參數。僅當WIFEXITED返回true時才應使用此宏。
從SYS/wait.h在Linux上:
# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
從比特/ waitstatus。h在Linux上:
/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
換句話說,如果您使用的是Linux,您將會使用這些宏。您正在使用HP-UX嗎?我注意到您鏈接到HP-UX的信息。如果是這樣,你的man 3 system
頁面說什麼?
另外,請記住,system
調用「SH -c 命令」,您將收到SH的返回值:
退出狀態
應返回以下出口值:
0要執行的腳本完全由零個或多個空行或註釋組成,或兩者兼有。
1-125非交互式shell檢測到語法,重定向或變量賦值錯誤。
127非交互式shell無法找到指定的command_file。
否則,shell將返回它調用或嘗試調用的最後一個命令的退出狀態(另請參閱特殊內置實用程序中的退出實用程序)。
如果您嘗試輸入什麼樣的返回值,例如system("exit 203");
?
我現在使用這個「解決方案」,但它會更容易,獲得返回值,然後我不應該使用文件。這就是爲什麼,我想知道如何捕獲返回值:) – kampi 2009-10-15 05:17:38