dup2() c语言
时间: 2023-12-03 19:47:46 浏览: 85
在 C 语言中,dup2() 是一个系统调用函数,它的功能是复制一个文件描述符,并将其指向另一个文件描述符所对应的文件或设备。其函数原型如下:
```c
#include <unistd.h>
int dup2(int oldfd, int newfd);
```
其中,oldfd 是需要复制的文件描述符,newfd 是要将其复制到的文件描述符。如果 newfd 已经被占用,则先将其关闭再进行复制。如果复制成功,则返回新的文件描述符,否则返回 -1。
下面是一个简单的示例程序,演示了如何使用 dup2() 函数将标准输出重定向到一个文件中:
```c
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int fd;
// 打开文件
fd = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0) {
perror("open");
return -1;
}
// 将标准输出重定向到文件
if (dup2(fd, STDOUT_FILENO) < 0) {
perror("dup2");
return -1;
}
// 输出到标准输出,实际上输出到文件
printf("Hello, world!\n");
// 关闭文件
close(fd);
return 0;
}
```
在这个示例程序中,我们首先使用 open() 函数打开一个名为 "output.txt" 的文件,并将其文件描述符保存到变量 fd 中。然后,我们使用 dup2() 函数将标准输出重定向到该文件,这样通过 printf() 输出的内容就会被写入到该文件中。最后,我们关闭文件并退出程序。
阅读全文