c - 使用 dup() 选择输出文件



所以我正在尝试使用 dup(( 将标准输出重定向到文件。

int save_fd;
save_fd=dup(1); //saves the current stdout
close(1); //closes stdout
dup2(file.txt, 1);//redirect output to file.txt
//output goes to file.txt
dup2(save_fd, 1); restore stdout
close(1);

我知道我可以使用 fopen 打开文件。由于 dup2 采用 int,如何为 file.txt 指定文件描述符?

使用 open 返回 fd 而不是 fopen

好吧,您有两种可能来获取文件描述符:

  1. open()

  2. fopen(),然后在打开的流上调用fileno()

因此,在open()的情况下,成功情况下的返回值是您要查找的文件描述符:

int fd = open("some_path", ...);

在你想使用 fopen() 的情况下,你仍然可以检索与开放流关联的文件描述符,但你需要调用函数fileno()

FILE *stream = fopen(some_file, "w");
int fd = fileno(stream);

最新更新