dup()和dup2函数示例
时间: 2024-03-08 22:45:51 浏览: 118
下面是一个简单的示例程序,演示了如何使用 dup() 和 dup2() 函数:
```c
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main() {
int fd1, fd2;
// 打开一个文件
fd1 = open("file.txt", O_RDWR);
if (fd1 == -1) {
perror("open");
return -1;
}
// 复制文件描述符,使用 dup()
fd2 = dup(fd1);
if (fd2 == -1) {
perror("dup");
return -1;
}
// 写入数据
write(fd1, "hello", 5);
write(fd2, "world", 5);
// 关闭文件描述符
close(fd1);
close(fd2);
// 复制文件描述符,使用 dup2()
fd2 = open("file.txt", O_RDWR);
if (fd2 == -1) {
perror("open");
return -1;
}
close(1); // 关闭标准输出
if (dup2(fd2, 1) == -1) { // 将标准输出重定向到文件
perror("dup2");
return -1;
}
printf("hello, world!\n");
return 0;
}
```
上述代码中,首先使用 open() 函数打开一个文件,然后使用 dup() 函数复制文件描述符,接着使用 write() 函数向两个文件描述符分别写入数据,最后关闭文件描述符。接下来,使用 open() 函数再次打开文件,然后使用 dup2() 函数将标准输出重定向到这个文件,最后使用 printf() 函数向标准输出写入数据。
阅读全文