system()调用在C中返回错误的值

即使通过system()调用成功运行命令后,我得到-1返回值。 有关更多信息,请参阅以下C代码。

system("ping -w 3 -c 1 -q -I 63.254.203.24 63.254.203.26 >/dev/null"); 

然后我检查这个system()调用的返回值,即使它是可ping的但我发现-1作为返回值。

看到实际返回值使用WEXITSTATUS(n)以及system没有返回实际值的原因是因为(这只对linux有效)它是用forkexecwait后来返回状态的进程包含进程是否正常结束还是由于信号加上实际返回值,并且访问那些不同的值,你必须使用宏,例如WEXITSTATUS(n)这些宏在man 3 wait中提到man 3 wait

man system RETURN VALUE部分:

错误时返回的值为-1(例如,fork(2)失败),否则返回命令的返回状态。 后一种返回状态采用wait(2)中指定的格式。 因此,命令的退出代码将是WEXITSTATUS(status) 。 在无法执行/ bin / sh的情况下,退出状态将是exit(127)的命令的退出状态。

幸运的是,我得到了答案。 由于内存故障导致fork失败。 使用system()调用不是一个好主意。

感谢您的支持和回答。