Linux如何运行pipe1,Linux C++管道之pipe
1. 函数说明
pipe(建立管道):
1) 头文件 #include
2) 定义函数: int pipe(int filedes[2]);
3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。
filedes[0]为管道里的读取端
filedes[1]则为管道的写入端。
4) 返回值: 若成功则返回零,否则返回-1,错误原因存于errno中。
错误代码:
EMFILE 进程已用完文件描述词最大量
ENFILE 系统已无文件描述词可用。
EFAULT 参数 filedes 数组地址不合法。
示例:
桌面/c++# cat -n pipe_test.cpp
1
2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 /*
10 * 程序入口
11 * */
12 int main()
13 {
14 int pipe_fd[2];
15 pid_t pid;
16 char buf_r[100];
17 char* p_wbuf;
18 int r_num;
19
20 memset(buf_r,0,sizeof(buf_r));
21
22 /*创建管道*/
23 if(pipe(pipe_fd)<0)
24 {
25 printf("pipe create error\n");
26 return -1;
27 }
28
29 /*创建子进程*/
30 if((pid=fork())==0) //子进程执行序列
31 {
32 printf("\n");
33 close(pipe_fd[1]);//子进程先关闭了管道的写端
34 sleep(2); /*让父进程先运行,这样父进程先写子进程才有内容读*/
35 if((r_num=read(pipe_fd[0],buf_r,100))>0)
36 {
37 printf("%d numbers read from the pipe is %s\n",r_num,buf_r);
38 }
39 close(pipe_fd[0]);
40 exit(0);
41 }
42 else if(pid>0) //父进程执行序列
43 {
44 close(pipe_fd[0]); //父进程先关闭了管道的读端
45 if(write(pipe_fd[1],"Hello",5)!=-1)
46 printf("parent write1 Hello!\n");
47 if(write(pipe_fd[1]," Pipe",5)!=-1)
48 printf("parent write2 Pipe!\n");
49 close(pipe_fd[1]);
50 wait(NULL); /*等待子进程结束*/
51 exit(0);
52 }
53 return 0;
54 }
55
56
桌面/c++# g++ pipe_test.cpp -o pipe_test
桌面/c++# ./pipe_test
parent write1 Hello!
parent write2 Pipe!
10 numbers read from the pipe is Hello Pipe
桌面/c++#
本篇文章来源于 Linux公社网站() 原文链接:
Linux如何运行pipe1,Linux C++管道之pipe相关推荐
- Linux如何运行pipe1,Linux中的管道
一.管道是进程间通信的一种重要手段,在linux中没有使用专门的数据结构,而是借助了文件系统的file结构和VFS索引节点inode.通过两个file结构指向同一个临时的VFS索引节点,而这个索引节点 ...
- 内网linux服务器安装运行环境,linux下如何在内网中安装docker_网站服务器运行维护...
docker的镜像和仓库是什么_网站服务器运行维护 docker镜像就像是一个linux的文件系统,这个文件系统里面包含了可以运行在linux内核的程序以及相应的数据.仓库是集中存储镜像的地方. 一. ...
- linux+后台运行+nohup,Linux后台运行命令集(、fg、bg、jobs、nohup、ctrl + z)
Linux后台运行命令集(&.fg.bg.jobs.nohup.ctrl + z) 1).& 命令或进程最后加上"&",可以把此操作放到后台执行: 2).c ...
- linux安装运行jmeter,Linux下安装运行Jmeter程序
Jmeter在linux系统中运行需要安装jdk和Jmeter两个软件: 1.安装JDK 先检查系统是否有安装jdk,在linux中执行如下命令:java -version 如果返回版本信息,说明系 ...
- linux 服务器运行慢,Linux运行慢?找出原因
对Linux 和Windows 都很熟悉的同学会告诉你:在同一配置上Linux 将会有更加出色的表现.但,事实并不全是这样.有些同学会感觉到与上面的说法正好想法.据Top500统计,约90%的世界一流 ...
- linux sh 运行命令,linux shell运行命令详解
在Linux下,如果你需要运行shell程序,那么应该使用那个命令呢?下面由学习啦小编为大家整理了linux shell运行命令的相关知识,希望对大家有帮助! linux shell运行命令 说明:用 ...
- c#在linux上运行,在Linux上运行C#的方法
本文实例讲述了在Linux上运行C#的方法.分享给大家供大家参考.具体方法如下: 在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库.编译器/解释器.运行环境.库以类和方法( ...
- 【Linux系统编程】进程间通信--无名管道(pipe)
管道的概述 管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制. 无名管道有如下特点: 1.半双工,数据在同一时刻只能在一个方向上流 ...
- linux怎么运行conda,linux怎么用conda
1.1.Numba的约5分钟指南 Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码.使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numb ...
最新文章
- gltf与glb格式转换 gltf-pipeline、binary-gltf-utils
- 朴素贝叶斯法(二)——基本方法
- springcloud13---zuul
- linux kernel同步方法的总结
- socket网络编程——TCP编程流程及端口号占用问题
- 01.CSS动画--transform
- 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)
- [react-router] React-Router的<Link>标签和<a>标签有什么区别
- 心得7--JDBC回顾-批处理案例解说
- java拓扑圆形布局算法
- css flex布局
- linux 上传下载工具有哪些,Linux上传下载工具
- 实现多楼层,每个楼层多房间,上下拖动切换楼层,左右拖动查看其他房间
- rj45 千兆接口定义_rj45 千兆接口定义_rj45接口定义,大神教你秒懂rj45的接线方法【详细方法】...
- 十大热门编程语言优缺点对比
- 分享一下最近微信域名防封的一些心得和经验,怎么才能做到域名防封呢
- Python Pygame实战之打地鼠小游戏
- 给中国学生的第六封信——选择…
- Mysql报错130_Mysql报错Forcing close of thread 139 user: 'root'
- 假设检验中原假设和备择假设的选取问题
热门文章
- 苹果Mac隔空接力Handoff失效怎么办?
- 谁在说谎c语言编译,C趣味程序百例(15)谁在说谎
- 用ESP8266+android,制作自己的WIFI小车(ESP8266篇)
- SystemVerilog学习笔记
- Cpu占用率检测以及 Cpu Burn
- 智能家居(2) —— 工厂模式实现烟雾报警
- 电子科技大学计算机科学与技术学硕,2021年电子科技大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
- 什么是核心交换机?选择核心交换机的重要考虑因素
- 一起来飞车服务器显示不全,一起来飞车不同服务器可以结婚吗
- 淘宝搜索相关关键词查询易语言代码