免费注册 查看新帖 |

Chinaunix

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

代码中如何重定向输出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-02 19:08 |只看该作者 |倒序浏览
比如我想在代码中用execle执行另一个程序,同时我想把它的输出重定向某个文件,如何实现?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-04-02 19:50 |只看该作者
可以参考
1. 各种 Shell 中重定向的实现
2. 各种介绍 Unix 编程的书中的相关介绍, 例如 APUE2
3. dup(3), exec 等函数/系统调用的文档

论坛徽章:
0
3 [报告]
发表于 2007-04-03 09:53 |只看该作者
原帖由 MMMIX 于 2007-4-2 19:50 发表于 2楼  
可以参考
1. 各种 Shell 中重定向的实现
2. 各种介绍 Unix 编程的书中的相关介绍, 例如 APUE2
3. dup(3), exec 等函数/系统调用的文档


谢谢你的回复,可以具体一点嘛,用shell重定向比较容易,用execle执行某个可执行文件时,参数表写入>,运行的时候就会报
"bad blocks count - >" 错误.
我的调用语句如下:
execle("/sbin/mke2fs","mke2fs","/dev/ram0",">","a.out",0,0);
报上面的错

论坛徽章:
0
4 [报告]
发表于 2007-04-03 10:10 |只看该作者
谢谢楼上,用dup可以搞定,但我想问一下,用dup2(new_fd, STDERR_FILENO)之后,如何恢复呢?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
5 [报告]
发表于 2007-04-03 16:13 |只看该作者
原帖由 qinzh130 于 2007-4-3 10:10 发表于 4楼  
谢谢楼上,用dup可以搞定,但我想问一下,用dup2(new_fd, STDERR_FILENO)之后,如何恢复呢?


其实恢复和重定向使用的方法是相同的. 例如你要通过 dup2 覆盖文件描述符 a, 那么可以先通过 dup 生成 a 的一个拷贝 a1, 然后覆盖 a, 在需要恢复的时候, 再通过 dup2 把 a1 重定向(恢复)到 a 即可.

论坛徽章:
0
6 [报告]
发表于 2007-04-03 18:58 |只看该作者
谢谢,搞定.
但我想问一下,如果关闭了1或者2,有没有办法重新打开呢?上网查到好像是打开/dev/fd/下面的1或者2即可,但我在代码中用open("/dev/fd/2",O_WRONLY)老是返回-1.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2007-04-03 19:42 |只看该作者
原帖由 qinzh130 于 2007-4-3 18:58 发表于 6楼  
但我想问一下,如果关闭了1或者2,有没有办法重新打开呢?


参考 APUE2 的 18, 19 章.

[ 本帖最后由 MMMIX 于 2007-4-3 19:49 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP