[英]C - system function always returns -1
每當我使用system()函數甚至用c編寫最簡單的程序時,它都會返回-1。 例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%d", system("pause"));
return 0;
}
我使用了多個編譯器來確保它不能僅與gcc一起使用。 每個cmd命令都會發生這種情況。 當我在cmd中鍵入命令時,它們可以正常工作。 該程序只是跳過每個system()函數調用。 PS我正在使用Windows 8.1和GNU編譯器(gcc)。
有誰知道我該怎么辦?
每當某個庫函數給出錯誤時,請嘗試檢查確切的錯誤。 閱讀文檔( MSDN , 手冊頁等)是一個很好的主意。 C標准庫函數通常設置全局errno
變量,並且有一些函數可將代碼轉換為字符串。 所以嘗試這樣的事情:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main()
{
int result = system("pause");
// note: have to use temp variable for return value,
// because function argument evaluation order is not defined in C
printf("system return value %d errno %d = %s\n", result, errno, strerror(errno));
// note, printf may set errno too, so it may have different value after above call
return 0;
}
當我將上述程序復制粘貼到foo.c時 ,啟動Qt SDK安裝的“ Qt 5.5 for Desktop(MinGW 4.9.2 32位)” ,它的工作原理如下(在控制台窗口中進行了一些簡短/消毒的復制粘貼):
C:\Users\hyde\foo>dir
Directory of C:\Users\hyde\foo
10.01.2016 10:25 443 foo.c
C:\Users\hyde\foo>mingw32-make foo
g++ foo.c -o foo
C:\Users\hyde\foo>dir
Directory of C:\Users\hyde\foo
10.01.2016 10:25 443 foo.c
10.01.2016 10:28 47 445 foo.exe
C:\Users\hyde\foo>foo
Press any key to continue . . .
system return value 0 errno 0 = No error
C:\Users\hyde\foo>
這段代碼(用“ ls”代替“ pause”)可以在Ubuntu中正常工作。 我認為這取決於您的系統策略。
嘗試右鍵單擊exe,然后選擇其他兼容模式之一。 您的程序對我有用(Windows 7 Pro),所以我可能先嘗試一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.