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.
相关阅读
delete一问C++ Programming Zone zzQuestions about MAKEFILEstandard C++ lib.a simple question for C++ class求一个evaluate chess board的简单算法请教一个MS Linked List的问题how to reverse a HUGE list?how to read CPU time in Fortran这个问题怎么答?can struct be derived from?a matlab gui questionwhich func will be called?trouble using gdb debugging C/C++What language I should use?inline functions in C++delete this problemperl question谁知道:forever loop 有三种方法实现。哪一种最effectivehow to verify X509 certificate in perl?