linux通过管道的进程通信,linux 线程或进程之间通过管道通信(pipe)
线程间通信:
#include // printf
#include // exit
#include // pipe
#include // strlen
#include // pthread_create
using namespace std;
void *func(void * fd)
{
printf("write fd = %d\n", *(int*)fd);
char str[] = "hello everyone!";
write( *(int*)fd, str, strlen(str) );
}
int main()
{
int fd[2];
char readbuf[1024];
if(pipe(fd) < 0)
{
printf("pipe error!\n");
}
// create a new thread
pthread_t tid = 0;
pthread_create(&tid, NULL, func, &fd[1]);
pthread_join(tid, NULL);
sleep(3);
// read buf from child thread
read( fd[0], readbuf, sizeof(readbuf) );
printf("read buf = %s\n", readbuf);
return 0;
}
// 输出结果
write fd = 4
read buf = hello everyone!�
进程间通信:
#include // printf
#include // exit
#include // pipe
#include // strlen
#include // pthread_create
using namespace std;
int main()
{
int fd[2];
int pid = 0;
char str[] = "hello";
char readbuf[1024];
if(pipe(fd) < 0)
{
printf("pipe error!\n");
}
if((pid = fork()) < 0)
{
printf("fork error!\n");
}
else if(pid == 0)
{
printf("child process!\n");
// close read channel
close(fd[0]);
write(fd[1], str, strlen(str));
}
else
{
printf("father process!\n");
// close write channel
close(fd[1]);
read(fd[0], readbuf, sizeof(readbuf));
printf("readbuf = %s\n", readbuf);
}
return 0;
}
// 输出结果:
father process!
child process!
readbuf = hello
linux通过管道的进程通信,linux 线程或进程之间通过管道通信(pipe)相关推荐
- Python爬虫:通信和线程池进程池
通信和线程池进程池 线程间通信 导入线程队列 from queue import Queue import time from random import randint 同一个进程中的多个线程可以直 ...
- 爬虫day8通信和线程池进程池总结
day8通信和线程池进程池总结 一.线程间通信 1.线程间通信 同一个进程中的多个线程可以直接通信(一个线程可以直接使用另外一个线程中产生的数据) 通信原则:使用全局变量 from threading ...
- python中线程和进程_python中线程和进程的简单了解
一.操作系统.应用程序 1.硬件:硬盘.cpu.主板.显卡........ 2.装系统(本身也是一个软件): 系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合. 3 ...
- 线程和进程的区别 线程和进程有什么不同
进程是资源分配的最小单位,线程是资源调度的最小单位. 线程是在进程下运行的.一个进程可以包含多个线程. 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间.而线程是共享进程中的数据的, ...
- 两个Java项目之间的通信_两个容器之间的Docker通信与Java
我没有在任何帖子上找到答案. 我在容器上使用带有PHP项目的容器,该容器工作正常.我想链接在另一个容器上启动的Java. 我使用"java:8"图像配置如下: engine: bu ...
- Linux 线程与进程,以及通信
http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...
- Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制
线程概念 线程与进程 线程间的独有与共享 多线程与多进程 线程控制 线程概念 什么是线程 线程是进程中的一条执行流,执行程序中的某部分代码.linux下没有具体实现的线程,只有库函数用pcb来实现的线 ...
- linux中线程和进程的区别深度剖析底层实现
文章目录 前言 Linux中进程和线程的共性 Linux中进程的创建 Linux中线程的实现 总结 前言 在没有仔细了解过Linux的进程和线程实现机制之前,看过很多关于进程和线程的博客,从这些博客中 ...
- Linux高性能服务器编程:进程池和线程池原理及应用(有图有代码有真相!!!)
一.问题引入 在前面编写多进程.多线程服务器时通过动态创建子进程和子线程来实现并发服务器,这样做有以下缺点: 1)动态创建进程.线程将会比较耗费时间,将导致较慢的客户响应. 2)动态创建的子进程只为一 ...
- linux下的进程创建,Linux下进程的创建
这篇文章主要是讲解到Linux进程的控制,包括程序和进程.守护进程.守护进程的出错处理. 1.程序和进程 程序(program)是存放在磁盘文件中的可执行文件,程序的执行实例被称为进程(process ...
最新文章
- 求一个矩阵的最大子矩阵
- 卸载MySQL Connector NET无法卸载
- 多IDC的数据分布设计(一) – 后端技术 by Tim Yang
- iphone各机型参数对比_我们对比新旧两代iPhone,发现iPhone 12最值得买
- Angularjs调用公共方法与共享数据
- Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
- mysql hex 和 c_什么是MySQL HEX()函数,它与CONV()函数有何不同?
- Python小白的数学建模课-17.条件最短路径算法
- 标量函数,多语句表值函数,内嵌表值函数
- Mask-Predict: Parallel Decoding of Conditional Masked Language Models
- 结构体与对象的联系与区别
- 2020-09-10 保证软件开发过程遵循ISO 26262标准的十个主要进阶步骤
- delphi对比易语言_易语言转换delphi 易语言编程100例
- python3视频教程哪个好_python3入门视频教程
- c语言中pinMode的作用,Arduino编程基础与常用函数(详细)解析
- 抢票软件开发(三) 其余功能
- 支付宝快捷支付接入问题
- 钉钉用“数字生产力”重建未来想象力
- 学习编程是否真的有用?
- DataTables warning:table id = TableDate: Cannot reinitialise DataTable的解决办法