BBS水木清华站∶精华区
发信人: Awind (木木的阿木), 信区: Unix
标 题: Re: 输出重定向
发信站: BBS 水木清华站 (Thu Mar 9 17:41:56 2000) WWW-POST
【 在 SkyFire (有话好好说) 的大作中提到: 】
∶ 如何对一个函数进行输出重定向?
∶ 或者对程序中的一段代码进行输出重定向。
∶ 谢谢.
只要你在你开始需要输出重定向前调用redir_stdout,
结束时调用resume_stdout恢复标准输出。
请参见下面的example.
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int fd, fd2;
mode_t fd_mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
void redir_stdout(const char *filename)
{
fd2=dup(STDOUT_FILENO);
fd = open(filename, O_WRONLY|O_CREAT, fd_mode);
dup2(fd, STDOUT_FILENO);
close(fd);
}
void resume_stdout()
{
dup2(fd2, STDOUT_FILENO);
close(fd2);
}
void main()
{
char ch;
printf("la la ...\n");
redir_stdout("./mfile");
printf("lo lo ...\n"); /* <<< add ur function or code here */
resume_stdout();
printf("wa wo ...\n");
}
~
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.202.205]
BBS水木清华站∶精华区