免费注册 查看新帖 |

Chinaunix

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

popen获取脚本输出失败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-11 22:54 |只看该作者 |倒序浏览
#include <stdio.h>
#include <string.h>
int main(int argc,int *argv[])
{
char line[1024];
char path[1024];
FILE *fp=popen("gdialog --inputbox \"输入名字\"","r");
fgets(line,1024,fp);
printf("%s\n",line);
pclose(fp);
return 0;
}
gdialog --inputbox 自身的输出是我输入的字符串,可是我用printf 打印出来的是个'D' 应该是乱码了,popen不是这样用的?
请高手指点一下,谢谢。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2011-01-11 23:20 |只看该作者
你的popen没有用错,不过应该加几个判断值
这是C语言问题
另外,gdialog这样的程序会输出很多终端控制符,并且我想gdialog程序编写的时候应该不太会让你重定向到管道也正常运行吧。

论坛徽章:
0
3 [报告]
发表于 2011-01-11 23:33 |只看该作者
怎么C语言也在shell版里发啊……一百年没用C了……平时也用不到……
看来大家真把shell版当”万能版“了

论坛徽章:
0
4 [报告]
发表于 2011-01-11 23:37 |只看该作者
你的popen没有用错,不过应该加几个判断值
这是C语言问题
另外,gdialog这样的程序会输出很多终端控制符, ...
cjaizss 发表于 2011-01-11 23:20



那应该怎么做才能获得inputbox里面输入的内容呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2011-01-11 23:39 |只看该作者
那应该怎么做才能获得inputbox里面输入的内容呢?
liukunmeister 发表于 2011-01-11 23:37



    你本来就不应该这么做

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2011-01-11 23:40 |只看该作者
你本来就不应该这么做
cjaizss 发表于 2011-01-11 23:39



   没看懂你想干嘛

论坛徽章:
0
7 [报告]
发表于 2011-01-12 08:06 |只看该作者
没看懂你想干嘛
cjaizss 发表于 2011-01-11 23:40


想在c程序中获得dialog--inputbox 里输入的内容,这个不算怪异吧,我这个只是个例子,来反映我遇到的问题

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2011-01-12 09:01 |只看该作者
你这个需求还真不好做,既然写C语言的话,自己做一个界面吧,curses下面应该容易做出这样的效果

论坛徽章:
0
9 [报告]
发表于 2011-01-12 10:56 |只看该作者
你的做法是想用popen获取gdialog的标准输出(stdout),可是gdialog却是默认输出到错误输出(stderr),
改一下应该就可以了:  FILE *fp=popen("gdialog --inputbox \"输入名字\"  2>&1", "r");

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2011-01-12 11:26 |只看该作者
你的做法是想用popen获取gdialog的标准输出(stdout),可是gdialog却是默认输出到错误输出(stderr),
改一下 ...
seeLnd 发表于 2011-01-12 10:56



    界面输出也在标准输出上,这下全乱成一锅粥了...还是用pipe+dup+fork+exec+wait来写吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP