|
发表于 2003-12-11 18:11:43
|
显示全部楼层
最初由 _z_ 发表
use "dup2" to redirect the STDOUT_FILENO to other file,
then read the information from file to string
example:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>
void err_exit(const char * str)
{
fprintf(stderr,"%s\n",str);
exit(1);
}
int main(int argc,char ** argv)
{
int fd;
char buf[]="zxcvbnm";
char zzz[16];
if((fd=open("./1.txt",O_RDWR|O_CREAT))<0)
err_exit("error to open file!");
dup2(fd,STDOUT_FILENO);
if(write(STDOUT_FILENO,buf,sizeof(buf))<0)
err_exit("error to open file!");
lseek(STDOUT_FILENO,0,SEEK_SET);
if(read(STDOUT_FILENO,zzz,sizeof(buf))<0)
err_exit("error to open file!");
/*did i get it?*/
fprintf(stderr,"%s\n",zzz);
return 0;
}
重定向到PIPE中,而不是一个文件。 这样做更好。 |
|