您的位置:程序门 -> linux/unix社区 -> 程序开发区



system函数返回值得问题???和棘手的问题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


system函数返回值得问题???和棘手的问题!
发表于:2007-12-29 13:38:21 楼主
函数原形是:
int   system(const   char   *command)
我对这个函数返回值的理解是:如果command被执行了,那么system的返回值就是command执行后的返回值。
这句话对不?
我在程序里调用了system来执行一个脚本,
脚本的返回值是   -111使用的语句是exit   -111,
但是,程序中system实际得到的值却不是   -111???
这是怎么回事????
有哪位高手能详细讲讲system函数调用的情况吗?
特别是它的返回值与command返回值大关系
发表于:2007-12-29 14:20:391楼 得分:0
要分成两部分来说:
1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的.

2,对于system函数,返回值是由两部分组成的,低8位值表示所执行的脚本在执行过程中所接收到的信号值,其余的位表示的脚本exit退出时所设置的值,

即脚本内exit退出是的值的低8位,在system返回值的低9-18位,
发表于:2007-12-30 11:33:082楼 得分:0
太精辟了,赞!
发表于:2008-01-01 09:26:093楼 得分:0
学习
发表于:2008-01-01 20:43:464楼 得分:0
精辟,学习
发表于:2008-01-02 20:11:405楼 得分:0

要分成两部分来说:  
1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的.  

2,对于system函数,返回值是由两部分组成的,低8位值表示所执行的脚本在执行过程中所接收到的信号值,其余的位表示的脚本exit退出时所设置的值,  

即脚本内exit退出是的值的低8位,在system返回值的低9-18位,


后面怎么是9-18位?怎么不是9-16位?
发表于:2008-01-03 11:06:206楼 得分:0
concern
发表于:2008-01-10 19:07:157楼 得分:0
我觉得不是,system()返回的是/bin/sh的返回值,不是执行命令的返回值
因为system()是通过/bin/sh执行你的命令的,并不直接执行命令

发表于:2008-01-11 09:51:228楼 得分:0


后面怎么是9-18位?怎么不是9-16位?

--------------

谢谢斧正


快速检索

最新资讯
热门点击