本文共 846 字,大约阅读时间需要 2 分钟。
#include <sys/stat.h>
#include <string.h> #include <fcntl.h> #include <io.h>int main(void)
{ #define STDOUT 1 //标准输出文件描述符 号int nul, oldstdout;
char msg[] = "This is a test";/* create a file */
//打开一个文件,操作者具有读写权限 如果文件不存在就创建
nul = open("DUMMY.FIL", O_CREAT | O_RDWR,S_IREAD | S_IWRITE);/* create a duplicate handle for standard
output *///创建STDOUT的描述符备份
oldstdout = dup(STDOUT); /*redirect standard output to DUMMY.FILE by duplicating the file handle onto the file handle for standard output.*///重定向nul到STDOUT
dup2(nul, STDOUT);/* close the handle for DUMMY.FIL */
//重定向之后要关闭nul
close(nul);/* will be redirected into DUMMY.FIL */
//写入数据
write(STDOUT, msg, strlen(msg));/* restore original standard output handle */
//还原
dup2(oldstdout, STDOUT);/* close duplicate handle for STDOUT */
close(oldstdout);return 0;
}//结果就是msg写到了文件中而不是STDOUT
转载地址:http://zshvb.baihongyu.com/