即使通过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 3 wait
man system
RETURN VALUE部分:
错误时返回的值为-1(例如,fork(2)失败),否则返回命令的返回状态。 后一种返回状态采用wait(2)中指定的格式。 因此,命令的退出代码将是
WEXITSTATUS(status)
。 在无法执行/ bin / sh的情况下,退出状态将是exit(127)
的命令的退出状态。
幸运的是,我得到了答案。 由于内存故障导致fork失败。 使用system()调用不是一个好主意。
感谢您的支持和回答。
以上就是c/c++开发分享system()调用在C中返回错误的值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549371.html