簡體   English   中英

C-系統功能總返回-1

[英]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.

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