免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10471 | 回复: 7
打印 上一主题 下一主题

C程序中怎么获取shell命令的返回值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-12 09:51 |只看该作者 |倒序浏览
我现在知道:

(1) system可以调用shell 命令,例如:system("ls -l") ; system("echo \"Hello, World\"") ;

(2) shell 命令是有返回值的:

              用 echo $? 便可以在标准输出上显示出此返回值

【问题】:
     
     在C语言中,怎么获取一条shell命令的返回值

     示意流程如下:
   
     return_code = system("shell command") ;

     if (return_code == 1)
           do something ;
     else if (return_code == 2)
           do something ;
     else
           do something ;

     这个问题应该蛮简单吧,大家给提示一下吧。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-12-12 09:54 |只看该作者
shell中可以通过echo $?来获取前面执行命令的返回值

论坛徽章:
0
3 [报告]
发表于 2008-12-12 10:13 |只看该作者
system的返回值就是

论坛徽章:
0
4 [报告]
发表于 2008-12-12 10:15 |只看该作者
原帖由 Godbach 于 2008-12-12 09:54 发表
shell中可以通过echo $?来获取前面执行命令的返回值


谢谢回复。
恩,这个我倒也知道,不知道在C语言中用system("command")调用shell命令,怎么获取到此shell命令的返回值?

论坛徽章:
0
5 [报告]
发表于 2008-12-12 10:16 |只看该作者
原帖由 cugb_cat 于 2008-12-12 10:13 发表
system的返回值就是



谢谢老大,呵呵,希望不计前嫌。

论坛徽章:
0
6 [报告]
发表于 2008-12-12 10:18 |只看该作者
原帖由 anank 于 2008-12-12 10:16 发表



谢谢老大,呵呵,希望不计前嫌。

还是让你看文档,system的man手册你没仔细看。

论坛徽章:
0
7 [报告]
发表于 2008-12-12 10:21 |只看该作者
The value returned is -1 on error (e.g.  fork() failed), and the return
       status  of  the command otherwise.  This latter return status is in the
       format specified in wait(2).  Thus, the exit code of the  command  will
       be  WEXITSTATUS(status).   In  case  /bin/sh could not be executed, the
       exit status will be that of a command that does exit(127).


对于返回值,还要使用WEXITSTATUS这些来判断一下,就像waitpid那样。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2008-12-12 10:23 |只看该作者
原帖由 anank 于 2008-12-12 10:16 发表



谢谢老大,呵呵,希望不计前嫌。


cat的胸怀跟宽带网一样宽广
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP