[英]system() call is returning wrong value in 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有效)它是使用fork
, exec
实现的,并wait
稍后返回进程,该进程包含进程是正常结束还是由于信号加实际返回值而结束,并且要访问那些不同的值,您将必须使用诸如WEXITSTATUS(n)
宏,这些宏在man 3 wait
被提及
手动man system
返回值部分:
错误时返回的值为-1(例如,fork(2)失败),否则返回命令的返回状态。 后一种返回状态采用wait(2)中指定的格式。 因此,该命令的退出代码将为
WEXITSTATUS(status)
。 如果/ bin / sh无法执行,则退出状态将是exit(127)
的命令的状态。
幸运的是,我得到了答案。 由于内存故障,它被派生失败。 使用system()调用不是一个好主意。
感谢您的支持和答复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.