簡體   English   中英

C中system()的返回值

[英]return value of system() in C

我在C中使用system()命令來執行sc query mysqlnet start mysql等命令。

如果參數為空指針,則在cmd處理器正常時返回1,否則返回0.在成功執行命令時,返回0。

我的問題是:我可以獲得其返回值的列表嗎? 就像命令無效或返回值不成功時返回的內容一樣? 我想根據system()的返回值做不同的事情。

你需要做的就是man system了解更多關於system()

說明 system()通過調用/ bin / sh -c命令執行命令中指定的命令,並在命令完成后返回。 在執行命令期間,SIGCHLD將被阻止,SIGINT和SIGQUIT將被忽略。

返回值錯誤時返回的值為-1(例如fork(2)失敗),否則返回命令的返回狀態。 后一種返回狀態采用wait(2)中指定的格式。 因此,命令的退出代碼將是WEXITSTATUS(狀態)。 如果無法執行/ bin / sh,則退出狀態將是退出(127)的命令的退出狀態。 如果command的值為NULL,則system()如果shell可用則返回非零值,否則返回0。

由於docs state system()返回-1如果為要執行的命令創建新進程失敗,否則返回執行命令的退出代碼。 這是使用echo $?檢索的相同值echo $? 在shell中執行相同的命令后,在Windows中的unix或echo %ERRORLEVEL% 因此,如果要處理返回值,則必須查看執行的命令返回的內容。

system()返回您啟動的進程的退出代碼。

退出代碼通常只有退出代碼為0表示成功而非零表示失敗的約定。 對於各種退出代碼的實際含義,它們特定於每個程序,然后是程序員的心血來潮。 您將不得不查找正在運行的特定程序的文檔(雖然通常沒有記錄,因此您必須閱讀源代碼)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM