您的位置:首页 > 理论基础 > 计算机网络

使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出?? http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=359433&page=

2015-09-11 22:18 1106 查看


使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出?? [复制链接]

00

dysnake





稍有积蓄



帖子
999
主题
83
精华
1
可用积分
536
信誉积分
100
专家积分
0
在线时间
0 小时
注册时间
2003-05-13
最后登录
2007-10-17

问答

好友

博客

消息

论坛徽章:
0

电梯直达


1楼[收藏(0)][报告]


发表于
2004-07-02 16:13:49 |只看该作者 |倒序浏览

分享到:

我有一个程序使用了dup2对标准输出进行了重定向,但处理完后希望将数据输出权重新还给系统,但有什么办法实现这一动作呢??我实验过重新使用dup2但不奏效,请大家指教一下.
本版精华

文库|博客

华为面试题(8分钟写出代码)

自己实现一个RTOS《实时操作系统揭秘》(附源码)

读写文件不是效率很低的嘛,那么数据库为何效率高呢

makefile权威文档

P2P原理的解释与实现

低通滤波在多节点非对称负载调度中的一个应用.

对于多核程序设计的一点总结

超高性能网络编程, Asynchronous network I/O

Berkeley DB简介

跟我一起写 Makefile

linux dhcp peizhi roc | 关于Unix文件的软链接 | 求教这个命令什么意思,我是新手,刚刚学习
... | sed -e "/grep/d"
是什么意思?谢谢 ... |
kj501





丰衣足食



帖子
817
主题
1
精华
1
可用积分
825
信誉积分
102
专家积分
0
在线时间
0 小时
注册时间
2002-11-19
最后登录
2014-06-24

问答

好友

博客

消息

论坛徽章:
0

2楼[报告]


发表于
2004-07-02 16:19:13 |只看该作者

使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出??

需要在dup2之前先保留原来的文件描述符。
你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
dysnake





稍有积蓄



帖子
999
主题
83
精华
1
可用积分
536
信誉积分
100
专家积分
0
在线时间
0 小时
注册时间
2003-05-13
最后登录
2007-10-17

问答

好友

博客

消息

论坛徽章:
0

3楼[报告]


发表于
2004-07-02 16:38:51 |只看该作者

使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出??

对我看了一下以前的帖子,保留原先的数据描述符.但还是有些不明白,为什么使用fork时主程序的标准输出被重新定向后,子进程仍然可以使用打开的标准输出描述符,操作系统是如何打开这个描述符,难道操作系统一直保留了标准输出的一个副本,为了分配给每一个进程使用????




你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
dysnake





稍有积蓄



帖子
999
主题
83
精华
1
可用积分
536
信誉积分
100
专家积分
0
在线时间
0 小时
注册时间
2003-05-13
最后登录
2007-10-17

问答

好友

博客

消息

论坛徽章:
0

4楼[报告]


发表于
2004-07-02 17:02:19 |只看该作者

使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出??

给出一个简单的程序给大家,是我刚刚实验的结果

#include <stdio.h>;

#include <unistd.h>;

#include <stdlib.h>;

#include <fcntl.h>;

#include <sys/types.h>;

#include <sys/stat.h>;

#include <string.h>;

#include <strings.h>;

int main()

{

int sfd = dup(STDOUT_FILENO), testfd;

printf("sfd = [%d]\n", sfd);

testfd = open("./temp",O_CREAT | O_RDWR | O_APPEND);

if (-1 == testfd)

{

printf("open file error.\n");

exit(1);

}

/* 重定向 */

if (-1 == dup2(testfd,STDOUT_FILENO) ) {

printf("can't redirect fd error\n");

exit(1);

}

/* 此时向stdout写入应该输出到文件 */

write(STDOUT_FILENO,"file\n",5);

/* 恢复stdout */

if (-1 != dup2(sfd,STDOUT_FILENO) ) {

printf("recover fd ok \n");

/* 恢复后,写入stdout应该向屏幕输出 */

write(STDOUT_FILENO,"stdout\n",7);

}

printf("gogogogogogo!\n");

close(testfd);

}

复制代码

这段程序是以前帖子中一位老兄的程序,我进行了一些修改后,给象我一样的朋友,希望有用.
你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
JohnBull





版主





帖子
8710
主题
226
精华
5
可用积分
9231
信誉积分
441
专家积分
20
在线时间
1507 小时
注册时间
2002-08-27
最后登录
2015-04-29

问答

好友

博客

消息

论坛徽章:
0

5楼[报告]


发表于
2004-07-03 01:19:03 |只看该作者

使用dup2重定向了标准输出后,使用什么方法恢复对终端的输出??

重新打开/dev/tty即可
Hold the truth! It's your weapon! -- X-Files

新浪微博:@sched_yield

==

政治立场坐标 0.8

文化立场坐标 0.8

经济立场坐标 0.2

你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
kangear





稍有积蓄



帖子
184
主题
10
精华
0
可用积分
356
信誉积分
712
专家积分
0
在线时间
219 小时
注册时间
2012-02-04
最后登录
2015-08-26

问答

好友

博客

消息

论坛徽章:
0

6楼[报告]


发表于
2014-04-18 13:31:28 |只看该作者

回复 4# dysnake

10年前的好贴呀!!我还以为dup2(STDOUT_FILENO, STDOUT_FILENO);就恢复了呢!!!!结果是没有恢复,导致我关也关不了了。太感谢了!

http://blog.csdn.net/kangear
你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
windoze





实习版主





帖子
1566
主题
13
精华
0
可用积分
11270
信誉积分
2597
专家积分
0
在线时间
3561 小时
注册时间
2004-05-30
最后登录
2015-09-11

问答

好友

博客

消息

论坛徽章:
13



























7楼[报告]


发表于
2014-04-18 13:38:44 |只看该作者

……楼上考得一手好古……
Unix is like a wigwam -- no Gates, no Windows, and an Apache inside.

Unix is very user-friendly. It`s just picky who its friends are.

你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
kangear





稍有积蓄



帖子
184
主题
10
精华
0
可用积分
356
信誉积分
712
专家积分
0
在线时间
219 小时
注册时间
2012-02-04
最后登录
2015-08-26

问答

好友

博客

消息

论坛徽章:
0

8楼[报告]


发表于
2014-04-19 10:49:22 |只看该作者

回复 7# windoze

看您也是在论坛的10年大将,诚然,岁月穿梭。。。

http://blog.csdn.net/kangear
你不会想去亚马逊上班吧?|针对数据库事务隔离级别的讨论! | openstack与docker
谁与争锋 | 当我们在搞嵌入式,需要什么?
Fart_King





白手起家

帖子
55
主题
13
精华
0
可用积分
77
信誉积分
173
专家积分
0
在线时间
109 小时
注册时间
2014-07-16
最后登录
2015-08-20

问答

好友

博客

消息

论坛徽章:
1



9楼[报告]


发表于
2015-04-25 09:21:05 |只看该作者

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: