免费注册 查看新帖 |

Chinaunix

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

[C] 在程序中执行shell 命令,并获得输出及返回值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-21 11:00 |只看该作者 |倒序浏览
在程序中执行shell 命令,并获得输出及返回值。
有什么好方法吗 现在已知popen可以获得输出,system 可以获得返回值,不想重定向到文件。
在python中有getstatusoutput 完美解决


比如 执行 ls /no_exist
执行结果 ls: /no_exist: No such file or directory, 且 echo $? 为非零值,

论坛徽章:
0
2 [报告]
发表于 2011-01-21 13:40 |只看该作者
回复 1# cc007cc
  1. c语言中获取shell执行的结果


  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <unistd.h>

  5. int main()
  6. {
  7.         FILE* fp = NULL;
  8.         char cmd[512];
  9.         sprintf(cmd, "pwd 2>/dev/null; echo $?");
  10.         if ((fp = popen(cmd, "r")) != NULL)
  11.         {
  12.                 fgets(cmd, sizeof(cmd), fp);
  13.                                 pclose(fp);
  14.         }

  15.                   //0 成功, 1 失败
  16.         printf("cmd is %s\n", cmd);

  17.         return 0;
  18. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-01-21 15:05 |只看该作者
{:3_190:} 这个问题是不是该发到shell版块去 估计会被移动过去。。。

论坛徽章:
0
4 [报告]
发表于 2011-01-21 17:05 |只看该作者
2个你都不想。。那你去读标准输出吧。。

论坛徽章:
0
5 [报告]
发表于 2011-01-22 19:52 |只看该作者
我提供的办法不好使吗?

论坛徽章:
0
6 [报告]
发表于 2011-01-22 22:54 |只看该作者
exec

论坛徽章:
0
7 [报告]
发表于 2011-01-22 23:12 |只看该作者
支持2楼的   popen 方法

论坛徽章:
0
8 [报告]
发表于 2011-01-30 14:51 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2011-03-11 09:20 |只看该作者
我提供的办法不好使吗?
rain_fish 发表于 2011-01-22 19:52



    谢谢帮助,正解是popen之后用pclose得到返回值,不多说,大家去man pclose吧

论坛徽章:
0
10 [报告]
发表于 2014-04-29 15:19 |只看该作者
回复 9# cc007cc
回复,真心有用,且pclose是正常的返回值的2倍。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP