dup / dup2
- 功能:文件描述符的复制,作用:重定向(更推荐dup2)
- 用法:
int newfd = dup(oldfd);
int ret = dup2(oldfd, newfd);
- 参数:
1)oldfd
2)newfd(dup2) - 返回值:
成功:返回新的文件描述符
失败:返回-1,并会设置errno - DO
#include <func.h>
int main(int argc, char* argv[]) {
int fd = open("application.log", O_RDWR | O_CREAT | O_APPEND, 0664);
if (fd == -1) {
error(1, errno, "open application.log");
}
write(STDERR_FILENO, "The first error message\n", 24);
close(STDERR_FILENO);
dup(fd);
write(STDERR_FILENO, "The second error message\n", 25);
return 0;
}
#include <func.h>
int main(int argc, char* argv[]) {
int fd = open("application.log", O_RDWR | O_CREAT | O_APPEND, 0644);
if (fd == -1) {
error(1, errno, "open application.log");
}
write(STDERR_FILENO, "The first error message\n", 24);
if (dup2(fd, STDERR_FILENO) == -1) {
error(1, errno, "dup2 %d %d", fd, STDERR_FILENO);
}
write(STDERR_FILENO, "The second error message\n", 25);
return 0;
}