gpt4 book ai didi

C - 系统函数总是返回 -1

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:11 24 4
gpt4 key购买 nike

每次我使用 system() 函数用 c 编写最简单的程序时,它都会返回 -1。例如:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("%d", system("pause"));
return 0;
}

我使用了多个编译器来确保它不仅仅适用于 gcc。每个 cmd 命令都会发生这种情况。当我在 cmd 中键入命令时,它们工作正常。该程序只是跳过每个 system() 函数调用。附言我正在使用 Windows 8.1 和 GNU 编译器 (gcc)。

有人知道我该怎么做吗?

最佳答案

当某些库函数出错时,请尝试检查它到底是什么错误。阅读文档( MSDNman page 等等)是个好主意。 C标准库函数一般设置全局errno变量,也有将code转成string的函数。所以尝试这样的事情:

#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 bit)”,它像这样工作(从控制台窗口稍微缩短/清理复制粘贴):

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>

关于C - 系统函数总是返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com