#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'?你想对结果做什么? –