我需要帮助才能理解文件描述符
所以这是我的代码:
int main()
{
char ch;
close(1);
//now opening a file so that it gets the lowest possible fd i.e. 1
int fd=open("txt",O_RDWR);
//check..
printf("first printtf is executed\n");
scanf("%c",&ch);
printf("ur value is %c\n",ch);
printf("second printf is executed\n");
return 0;
}
在上面的程序中,我尝试将printf
的输出重定向到txt
文件而不是标准输出,即终端。
但是如何恢复标准输出文件描述符,以便printf
在第二种情况下再次正常工作,即第二种printtf
应该只向终端输出..
答案 0 :(得分:4)
执行此操作的最简单方法是在关闭输出描述符之前复制它。您必须查看dup。
答案 1 :(得分:0)
关闭它之前我想你想复制()它。 当你需要它时,你可以复制()复制。
dup将始终使用最低的描述符
int out = dup(1);
close(1);
int fd = open();
...
close(fd);
dup(out);
close(out);
警告:这是来自内存并未经测试; - )