學習system函式

2021-04-13 03:14:29 字數 624 閱讀 7991

『system()』,『pclose()』或者『waitpid()』的返回值不象是我程序的退出值 (exit value) (譯者注:退出值指呼叫exit() 或_exit()時給的引數)...

或者退出值左移了8 位...這是怎麼搞的?

手冊頁是對的,你也是對的! 如果查閱手冊頁的『waitpid()』你會發現程序的返回值被編碼了。正常情況下,程序的返回值在高16位,而餘下的位用來作其它事。

如果你希望可移植,你就不能憑藉這個,而建議是你該使用提供的巨集。這些巨集總是在『wait()』或『wstat』的文件中說明了。

為了不同目的定義的巨集(在『』)包括(stat是『waitpid()』返回的值):

`wifexited(stat)'

如果子程序正常退出則返回非0

`wexitstatus(stat)'

子程序返回的退出碼

`wifsignaled(stat)'

如果子程序由與訊號而 終止則返回非0

`wtermsig(stat)'

終止子程序的訊號**

`wifstopped(stat)'

如果子程序暫停(stopped)則返回非0

`wstopsig(stat)'

使子程序暫停的訊號**

system函式呼叫

相關函式 fork,execve,waitpid,popen 表頭檔案 include 定義函式 int system const char string 函式說明 system 會呼叫fork 產生子程序,由子程序來呼叫 bin sh c string來執行引數string字串所代表的命令,此命 ...

system函式和popen函式

include file popen const char command,const char type int pclose file stream popen總是和pclose一起出現被使用的。popen 建立乙個管道,通過fork或者invoke乙個子程序,然後執行command。返回值在標...

system函式和popen函式

linux的system函式的實現原始碼 system 會呼叫fork 產生子程序,由子程序來呼叫 bin sh c cmdstring來執行引數cmdstring字串所代表的命令,此命令執行完後隨即返回原呼叫的程序。int system const char cmdstring if pid fo...