资源描述:
《linux 下 system 返回值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、linux下system返回值1.10What'sthereturnvalueofsystem/pclose/waitpid?1.10system/pclose/waitpid的返回值是什么?Thereturnvalueofsystem(),pclose(),orwaitpid()doesn'tseemtobetheexitvalueofmyprocess...ortheexitvalueisshiftedleft8bits...what'sthedeal?system(),pclose(),或waitpid()的返回值不像是我
2、的进程的退出值……或者退出值被左移了8位……怎么回事?/*??说了什么,我也不知道呀*/Themanpageisright,andsoareyou!Ifyoureadthemanpageforwaitpid()you'llfindthatthereturncodefortheprocessisencoded.Thevaluereturnedbytheprocessisnormallyinthetop16bits,andtherestisusedforotherthings.Youcan'trelyonthisthough,not
3、ifyouwanttobeportable,sothesuggestionisthatyouusethemacrosprovided.Theseareusuallydocumentedunderwait()orwstat.Manpage是对的,你也是!如果你阅读了waitpid()的manpage,就会发现进程的返回值是经过编码的。返回值只有高16位是正常的,剩下的被用作其他用途。你不可以依赖这个思路,除非你不考虑移植性。建议使用提供的宏。记载在wait()或wstat的联机手册里。*/[不懂不懂!不懂不懂!]Macrosdef
4、inedforthepurpose(in`')include(statisthevaluereturnedbywaitpid()):为此定义的宏(在)包括(stat是waitpid()的返回值):WIFEXITED(stat)Nonzeroifchildexitednormally.非零如果子程序正常退出WEXITSTATUS(stat)exitcodereturnedbychild子程序返回exit值WIFSIGNALED(stat)Non-zeroifchildwastermi
5、natedbyasignal非零如果子进程被一个信号结束WTERMSIG(stat)signalnumberthatterminatedchild结束子进程的信号number/*signalnumber怎么翻译呀*/WIFSTOPPED(stat)non-zeroifchildisstopped非零如果子进程被停止WSTOPSIG(stat)numberofsignalthatstoppedchild停止子进程的signalnumber.WIFCONTINUED(stat)non-zeroifstatuswasforcontin
6、uedchild非零如果状态是继续运行的子进程WCOREDUMP(stat)IfWIFSIGNALED(stat)isnon-zero,thisisnon-zeroiftheprocessleftbehindacoredump.如果WIFSIGNALED(stat)非零,而且进程产生了一个coredump,那么这个也是非零。[WIFSIGNALED(stat)和coredump是否有先后次序?]我在进程A里用system()调用进程B..我希望进程A能得到进程B执行出错后对应返回值..望高人指点一下..在线等....网友回复:要
7、分成两部分来说:1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的.2,对于system函数,返回值是由两部分组成的,低8位值表示所执行的脚本在执行过程中所接收到的信号值,其余的位表示的脚本exit退出时所设置的值,即脚本内exit退出是的值的低8位,在system返回值的低9-16位.Linux中调用system的返回值包含文件#include#include#include8、rrno.h>先写一个被调用的函数==================================#includeintmain(){printf("Return10.");return10;}====================