k*f
4 楼
换stdout的时候,需要fflush的。把之前的东西刷出去。
从来没有用过open/dup2
我就是用:fopen造个FILE*
FILE*old_stdout=stdout
stdout=那个FILE*
blahblah....
fflush(stdout);
stdout=old_stdout;
【在 B********s 的大作中提到】
: 帮忙看看这段代码为什么不能把输出重定向到屏幕?
: int main()
: {
: int fdout;
: fdout = open("a",O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
: dup2(fdout,STDOUT_FILENO);
: printf("hehe\n");
: dup2(1,STDOUT_FILENO);
: printf("haha\n");
: return 0;
从来没有用过open/dup2
我就是用:fopen造个FILE*
FILE*old_stdout=stdout
stdout=那个FILE*
blahblah....
fflush(stdout);
stdout=old_stdout;
【在 B********s 的大作中提到】
: 帮忙看看这段代码为什么不能把输出重定向到屏幕?
: int main()
: {
: int fdout;
: fdout = open("a",O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
: dup2(fdout,STDOUT_FILENO);
: printf("hehe\n");
: dup2(1,STDOUT_FILENO);
: printf("haha\n");
: return 0;
t*t
5 楼
他这段问题不在这里(因为stdout缺省是line buffered)
我假设他STDOUT_FILENO=1
那么他作的是
dup2(fdout, 1)
...
dup2(1,1)
...
这就好象写:
a1=a_fdout;
// use a1 as a_fdout
a1=a1;
// trying to recover previous a1
这显然不make sense...
【在 k****f 的大作中提到】
: 换stdout的时候,需要fflush的。把之前的东西刷出去。
: 从来没有用过open/dup2
: 我就是用:fopen造个FILE*
: FILE*old_stdout=stdout
: stdout=那个FILE*
: blahblah....
: fflush(stdout);
: stdout=old_stdout;
我假设他STDOUT_FILENO=1
那么他作的是
dup2(fdout, 1)
...
dup2(1,1)
...
这就好象写:
a1=a_fdout;
// use a1 as a_fdout
a1=a1;
// trying to recover previous a1
这显然不make sense...
【在 k****f 的大作中提到】
: 换stdout的时候,需要fflush的。把之前的东西刷出去。
: 从来没有用过open/dup2
: 我就是用:fopen造个FILE*
: FILE*old_stdout=stdout
: stdout=那个FILE*
: blahblah....
: fflush(stdout);
: stdout=old_stdout;
c*x
8 楼
Things look more complicated than they appears,
The call:
fid = dup2(fildes, fildes2);
is equivalent to:
close(fildes2);
fid = fcntl(fildes, F_DUPFD, fildes2);
When you "dup2(fdout,STDOUT_FILENO);" you close the stdout, no way
you can use 1 to reopen it.
The call:
fid = dup2(fildes, fildes2);
is equivalent to:
close(fildes2);
fid = fcntl(fildes, F_DUPFD, fildes2);
When you "dup2(fdout,STDOUT_FILENO);" you close the stdout, no way
you can use 1 to reopen it.
相关阅读
请问怎么把网页的宽屏显示改为普通的为什么不能成功排序问个字符串的基本问题Indent的问题c++ template question:python程序运行速度的问题请教:如何用vs2003打开vs2005的工程哪能找到programming pearls那本书?does the system guarantee this? (转载)问个问题F# language关于C C++ 和java的文件读写问题关于brainbench的c++考试,大家都是选什么level?emacs里面有没有快捷建能交换2个窗口的内容? (转载)推荐一个network programming的C++ library? (转载)Why need to learn design pattern?question about socket programming请教register请看看这个Perl random sampling code 有什么问题,有人能解释一下这段C++代码吗