linux用c语言实现<>重定向
时间: 2023-12-05 15:06:14 浏览: 87
在 Linux 中,我们可以使用 C 语言中的 dup2() 函数来实现重定向。dup2() 函数可以将一个已有的文件描述符复制到另一个文件描述符上,并且会关闭目标文件描述符原有的文件(如果它已经打开了文件)。
下面是一个简单的例子,演示如何将标准输出重定向到一个文件:
```c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd == -1) {
perror("open");
return 1;
}
if (dup2(fd, STDOUT_FILENO) == -1) {
perror("dup2");
return 1;
}
printf("Hello, world!\n");
close(fd);
return 0;
}
```
这个程序会将标准输出重定向到一个名为 "output.txt" 的文件中。它首先使用 open() 函数打开文件,并且获取文件描述符。然后,使用 dup2() 函数将标准输出重定向到这个文件描述符上。最后,当程序调用 printf() 函数输出字符串时,输出内容会被写入到 "output.txt" 文件中。
注意,dup2() 函数的第一个参数是源文件描述符,第二个参数是目标文件描述符。在本例中,我们将标准输出的文件描述符(即 STDOUT_FILENO)复制到了我们打开的文件描述符上。这意味着,所有写入标准输出的内容都会被重定向到 "output.txt" 文件中。
阅读全文