C/C++中system函數使用問題,返回報錯:NO child processe

system報錯現象:

在Linux下用system()函數執行命令時出錯,返回-1,錯誤原因NO child processes。

分析:

根據官方手冊,如果SIGCHLD信號行爲被設置爲SIG_IGN時,waitpid()函數有可能因爲找不到子進程而報ECHILD錯誤。

問題的解決方案:

在調用system()函數前重新設置SIGCHLD信號爲缺省值,即signal(SIGCHLD, SIG_DFL)。現已解決!將所有使用system命令的地方,採用封裝函數system_monthpay(項目中的函數)。(目前程序中子進程信號確實設置了忽略,UNIX系統下未出現類似情況)

以下爲實際項目中的修改方法:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章