我有一个应用程序在某些时候调用

system("/usr/sbin/iptables -t nat F")

刷新ip表。由于应用程序是多线程的,并且由多个开发人员开发,因此在某个时候iptables停止了设置。结果发现,我无法利用外部流程(也尝试过system("/bin/ls")但没有成功)。这些命令可以从shell运行,没有问题。
不管调用什么命令,我都会得到返回值-1。有没有办法得到更多的信息来解释为什么会失败?

最佳答案

尝试在调用errorno之后打印出system或其描述性字符串。添加以下内容:

#include <errno.h>

system("/bin/ls");
printf ("Error: %s\n",strerror(errno));

可能会给你更多的细节。

10-08 11:41