#include<stdio.h>
#include<stdlib.h>
main()
{
printf("Hello World..\n");
system("ls");
}
這裏......在成功執行系統函數會返回「LS」 command..and的statys失敗,它將返回-1 ..系統的返回值()函數
所以誰能幫助我得到返回值爲「-1」的系統函數失敗條件
#include<stdio.h>
#include<stdlib.h>
main()
{
printf("Hello World..\n");
system("ls");
}
這裏......在成功執行系統函數會返回「LS」 command..and的statys失敗,它將返回-1 ..系統的返回值()函數
所以誰能幫助我得到返回值爲「-1」的系統函數失敗條件
system
函數返回-1
如果system
本身失敗,則不是如果它調用的命令失敗。例如,如果fork
調用失敗,則system
返回-1
。如果系統資源非常短(如內存),或者系統對可運行的進程數量有限制,則可能會發生這種情況。
如果該命令失敗(例如,如果您致電system("false")
),system
返回的值不僅僅是該命令的返回值;它是由wait
系統調用返回的值; man 2 wait
欲瞭解更多信息。 (這是假設一個類Unix系統;對system()
在其他操作系統上的行爲不同。)
當然,如果你想看到以system
一個調用的返回值,則需要該值存儲在變量:
int result = system("ls");
您應該閱讀system
函數的文檔。
如果您試圖導致system
失敗並返回-1
,則一種方法是使用它來遞歸調用您的程序。這可能消耗大量內存,並可能干擾系統。只有當您是唯一使用該系統的人時才這樣做,並且您不介意可能干擾其操作。
(順便說一下,main
的定義應該是int main(void)
,不只是main()
,雖然這不是直接相關的前1999年,省略返回類型將默認爲int
;這不再是允許的,但很多編譯器仍然支持舊形式。空括號沒有指定參數的數量; (void)
明確表示沒有參數,並且是首選的形式。)
「等待系統調用」假設您處於posixized系統(爲什麼?) –
@ n.m .:好點。 OP使用gcc和'ls'命令,這使得它可能是一個類Unix系統,但是我已經更新了我的答案以使其更加明確。 –
我在cygwin上使用gcc ... –
你問如何導致'system'失敗,因此它返回了'-1'?你想對結果做什麼? –