您的位置:首页 > 产品设计 > UI/UE

Return value about System("command")

2011-05-11 14:32 369 查看
System函数:

是由fork、execve和waitpid三个系统调用实现的。
例如执行:system("ls /tm") --返回值为256

所以如果execve出错,则直接调用_exit(256),所以变量ret的值等于256.
在system函数执行时,会启动一个子进程运行shell,然后通过将ls /tm作为参数传给shell,如果shell命令运行有错,就调用exit XXX作为system的返回值返回,而XXX是system函数的返回值,而不是shell运行ls /tm后的返回值。

 

Exit函数:
exit时,退出状态码只能是一个字节,超过部分被截取.
在父进程获取其状态时,把这个字节的数据放在了低地址第二个字节位置了.这些都是对补码操作的.

因此,exit (-1) 和exit (255)时,父进程取的状态码是一样的,你无法区分

因此,我们一般只根据退出状态为0或则非0来判断成功或失败,而不做进一步的区分.

 

注意:

     如果把system的返回值除以256就可以得到真正的返回值了,因为system()返回的结果分两个部分,前面是命令的返回值,后面是运行因为信号终止时的信号值。所以要/256就是这个原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system command shell
相关文章推荐