system()函数的返回值

时间:2015-07-21 14:38:04

标签: c child-process libc

#include<stdio.h>
#include<stdlib.h>
main()
{
printf("Hello World..\n");
system("ls");
}

这里...... ON SUCCESSFUL执行系统函数返回“ls”命令的状态..并且ON FAILURE它返回-1 ..

所以任何人都可以帮助我获得系统函数的FAILURE条件,返回值为“-1”

1 个答案:

答案 0 :(得分:4)

system函数如果-1本身失败则返回system,如果它调用的命令失败则不返回system函数。例如,如果-1调用失败,fork将返回system("false")。如果您的系统资源非常短缺(例如内存),或者您的系统对可以运行的进程数量施加限制,则会发生这种情况。

如果命令失败(例如,如果调用system),则wait返回的值不仅仅是命令的返回值;它是man 2 wait系统调用返回的值; system()了解更多信息。 (这假定类似Unix的系统; system在其他操作系统上的行为不同。)

当然,如果您想查看调用int result = system("ls"); 返回的值,则需要将该值存储在变量中:

system

您应该阅读system函数的文档。

如果您试图导致-1失败并返回main,一种方法是使用它来递归调用您的程序。这可能会占用大量内存,并可能会干扰您的系统。只有当您是使用该系统的唯一人员时才这样做,并且您不介意可能干扰其操作。

(顺便提一下,int main(void)的定义应该是main(),而不仅仅是int,尽管这不是直接相关的。在1999年之前,省略返回类型将默认为{{1}不再允许,但是许多编译器仍然支持旧表单。空括号不指定参数的数量; (void)明确表示没有参数,并且是首选表单。)