dup与dup2函数
程序员文章站
2022-03-16 21:26:47
1. 依赖的头文件 2. 函数定义 3. 函数作用 + dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。 + 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是 ......
-
依赖的头文件
#include <unistd.h>
-
函数定义
int dup(int oldfd); int dup2(int oldfd, int newfd);
-
函数作用
- dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。
- 如果两个文件描述符指向同一个file结构体,file status flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。
- 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的file status flag和读写位置。
-
实战
- 需求:在代码中执行2次printf("hello linux\n"),前一次输入到world文件中,后一次输入到屏幕上
#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> void file_redirect() { //先备份现场 int outfd = dup(1); //先做重定向 int fd = open("world", o_wronly|o_creat,0666); //标准输出到重定向fd到对应的文件 dup2(fd, 1); printf("hello linux\n"); //需要来一次刷新 fflush(stdout); //需要恢复1,重新到标准输出 dup2(outfd, 1); printf("hello linux\n"); } int main(int argc, char* argv[]) { file_redirect(); return 0; }
推荐阅读
-
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
-
php中addslashes函数与sql防注入
-
Oracle过程与函数的区别分析
-
php连接函数implode与分割explode的深入解析
-
Oracle round()函数与trunc()函数区别介绍
-
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
-
Java回调函数与观察者模式实例代码
-
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
-
Python for循环与range函数的使用详解
-
解析php函数method_exists()与is_callable()的区别