`
thecloud
  • 浏览: 881161 次
文章分类
社区版块
存档分类
最新评论

标准I/O重定向,流,文件描述符及进程操作的转换

 
阅读更多

对网络编程中 常用的 管道技术,标准I/O重定向,流,文件描述符及进程操作的转换做简单总结,不足之处随后补上


3个数据流 对应的文件描述符 (int)
标准输入stdio --需要处理的数据流 0
标准输出stdout--结果数据流1
标准错误输出 stderr --错误消息流2
进程请求一个新的文件描述符的时候,系统内核将最低可用的文件描述符 赋给他
FILE *fp;
int fd;
fd = open("filename", O_RDONLY); //fd 为 返回的 最低可用的文件描述符
close(fd); //断开 该 文件描述符的连接
fgets(buffer, BUFSIZE , stdin);//从标准输入读取
fgets(buffer, BUFSIZE , fp);//从文件中读取
管道编程
int apipe[2];
if( pipe(apipe) == -1 ) //创建管道类似与 open, apipe[0], apipe[1] 分别接 读数据端和写数据端 最低可用的 文件描述符。
oops("pipe");
read(apipe[0], buffer, BUFSIZE);
write(1, buffer, BUFSIZE);正确的话,返回BUFSIZE
总结:read,write 对 文件 描述符 进行操作。 (管道建立时 两端 对应 相应的文件描述符)
FILE *fpout, *fpin;
fpout = fdopen( todc[1] , "w"); // fdopen 将文件描述符 (例如 管道两端) 转会为 流,即可像操作文件一样 操作文件描述符。 (之前 是 read,write)
fprintf( fpout, "the thing is %s ", buf);
fflush(fpout);
if ( fgets(buf, BUFSIZ, fpin) == NULL )
break;
printf("%s", buf);
fclose(fpout);
fclose(fpin);
fpin = fdopen (todc[0], "r")
popen 对进程 操作,定向为流,即可像操作文件一样 操作 进程
FILE *fp;
fp = popen("ls", "r");
fgets(buf, BUFSIZ, fp);
pclose(fp);

分享到:
评论

相关推荐

    FreeBSD操作系统设计与实现

    6.4.5 描述符上的多路I/O操作 6.4.6 select调用的实现 6.4.7 数据在内核中的转移 6.5 虚拟文件系统的接口 6.5.1 vnode的内容 6.5.2 对vnode的操作 6.5.3 路径名转换 6.5.4 文件系统的导出服务 6.6 与文件系统无关的...

    UNIX操作系统教程 张红光

    第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要特性3 1.3UNIX系统的发展史4 1.4开源软件与UNIX的推广发展6 1.4.1开源...

    C语言FAQ 常见问题列表

    o 4.9 ++i 和 i++ 有什么区别? o 4.10 如果我不使用表达式的值, 我应该用 ++i 或 i++ 来自增一个变量吗? o 4.11 为什么如下的代码 int a = 100, b = 100; long int c = a * b; 不能工作? o 4.12 我需要根据...

    C++网络爬虫项目

    发送/接收超文本传输协议请求/响应,发送成功将套接字描述符加入多路I/O, 接收成功抽取统一资源定位符压入队列。 2.2.7. 超文本传输协议响应包头(HttpHeader) 状态码和内容类型等关键信息。 2.2.8. 超文本传输协议...

    Linux高性能服务器编程

    第二部分对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    11.8 文件描述符输入/输出 11.9 文件访问权限 11.10 在c程序内部执行命令 11.11 在c程序内部使用管道 11.12 环境变量 11.13 c编译器 11.14 使用性能评估程序 11.15 函数库 11.16 对c代码进行计时 11.17 使用make ...

    linux与unix shell编程指南.rar

    linux/unix shell编程指南,全面介绍了Linu/unix shell编程的常用知识和技巧,是不可多得的编程宝典。 目 录 译者序 ...18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 ...

    python cookbook(第3版)

    11.11 进程间传递Socket文件描述符 11.12 理解事件驱动的IO 11.13 发送与接收大型数组 第十二章:并发编程 12.1 启动与停止线程 12.2 判断线程是否已经启动 12.3 线程间通信 12.4 给关键部分加锁 12.5 ...

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 ...18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 ...

    Linux与unix shell编程指南

    18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 continue 197 18.8.4 浏览文件行 198 18.9 菜单 199 18.10 小结 201 第19章 shell函数 ...

    shell 编程指南pdf

    初学shell 入门好书!!!! 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 ...18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 ...

    LINUX与UNIX SHELL编程指南(很全)

    非常的全,绝对不会让你后悔。 目 录 译者序 前言 第一部分 shell ...18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 ...

    Windows 系统错误代码简单分析

     0130 试图使用操作(而非原始磁盘I/O)的已打开磁盘分区的文件句柄。  0131 试图将文件指针移至文件开头之前。  0132 无法在指定的设备或文件中设置文件指针。  0133 对于包含已连接驱动器的驱动器,不能...

    LINUX 与 UNIX SHELL编程指南

    18.7.10 while 循环和文件描述符 196 18.8 使用 break 和 continue 控制循环 197 18.8.1 break 197 18.8.2 跳出 case 语句 197 18.8.3 continue 197 18.8.4 浏览文件行 198 18.9 菜单 199 18.10 小结 201 第...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50...

    shell编程和unix命令

    本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第1章 文件...

    Linux shell编程指南

    5.11 使用文件描述符 44 5.12 小结 45 第6章 命令执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将命令结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50...

    linux与unix shell 编程(下)

    目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 ...18.7.10 while循环和文件描述符 196 18.8 使用break和continue控制循环 197 18.8.1 break 197 18.8.2 跳出case语句 197 18.8.3 continue 197 18.8.4 ...

Global site tag (gtag.js) - Google Analytics