gpt4 book ai didi

c - system() 函数的返回值

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:37 30 4
gpt4 key购买 nike

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

这里...成功执行系统函数返回“ls”命令的状态..失败时返回-1..

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

最佳答案

如果 system 本身失败,system 函数返回 -1,如果它调用的命令失败则不会。例如,如果 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) 明确表示没有参数,并且是首选形式。)

关于c - system() 函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542162/

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