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水木清华站∶精华区