程序里偶尔会用到system()函数,执行些脚本,不过把这个调用放在循环里调时,system()的返回结果经常为-1,
但它调的命令却是执行了。
有点奇怪,于是上网找了个system()的源码,贴下看看:
从上面这段代码,不难看出:
1. system()的返回值不是cmd的返回值
2. 当返回-1时,cmd不一定没有执行,有可能是folk出错,还有可能是在父进程里调waitpid()时出错。
好像很多人建议尽量用popen()代替system(),嗯,如果要是发现popen()有什么值得注意之处再来说说。
本文探讨了C语言中system()函数的使用及返回值问题。通过分析源码揭示了system()函数返回-1的原因,并指出其返回值并不代表命令的执行结果。此外,还提到了popen()作为替代方案的可能性。
803

被折叠的 条评论
为什么被折叠?



