线程间通信:

#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)相关推荐

  1. Python爬虫:通信和线程池进程池

    通信和线程池进程池 线程间通信 导入线程队列 from queue import Queue import time from random import randint 同一个进程中的多个线程可以直 ...

  2. 爬虫day8通信和线程池进程池总结

    day8通信和线程池进程池总结 一.线程间通信 1.线程间通信 同一个进程中的多个线程可以直接通信(一个线程可以直接使用另外一个线程中产生的数据) 通信原则:使用全局变量 from threading ...

  3. python中线程和进程_python中线程和进程的简单了解

    一.操作系统.应用程序 1.硬件:硬盘.cpu.主板.显卡........ 2.装系统(本身也是一个软件): 系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合. 3 ...

  4. 线程和进程的区别 线程和进程有什么不同

    进程是资源分配的最小单位,线程是资源调度的最小单位. 线程是在进程下运行的.一个进程可以包含多个线程. 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间.而线程是共享进程中的数据的, ...

  5. 两个Java项目之间的通信_两个容器之间的Docker通信与Java

    我没有在任何帖子上找到答案. 我在容器上使用带有PHP项目的容器,该容器工作正常.我想链接在另一个容器上启动的Java. 我使用"java:8"图像配置如下: engine: bu ...

  6. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  7. Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制

    线程概念 线程与进程 线程间的独有与共享 多线程与多进程 线程控制 线程概念 什么是线程 线程是进程中的一条执行流,执行程序中的某部分代码.linux下没有具体实现的线程,只有库函数用pcb来实现的线 ...

  8. linux中线程和进程的区别深度剖析底层实现

    文章目录 前言 Linux中进程和线程的共性 Linux中进程的创建 Linux中线程的实现 总结 前言 在没有仔细了解过Linux的进程和线程实现机制之前,看过很多关于进程和线程的博客,从这些博客中 ...

  9. Linux高性能服务器编程:进程池和线程池原理及应用(有图有代码有真相!!!)

    一.问题引入 在前面编写多进程.多线程服务器时通过动态创建子进程和子线程来实现并发服务器,这样做有以下缺点: 1)动态创建进程.线程将会比较耗费时间,将导致较慢的客户响应. 2)动态创建的子进程只为一 ...

  10. linux下的进程创建,Linux下进程的创建

    这篇文章主要是讲解到Linux进程的控制,包括程序和进程.守护进程.守护进程的出错处理. 1.程序和进程 程序(program)是存放在磁盘文件中的可执行文件,程序的执行实例被称为进程(process ...

最新文章

  1. 求一个矩阵的最大子矩阵
  2. 卸载MySQL Connector NET无法卸载
  3. 多IDC的数据分布设计(一) – 后端技术 by Tim Yang
  4. iphone各机型参数对比_我们对比新旧两代iPhone,发现iPhone 12最值得买
  5. Angularjs调用公共方法与共享数据
  6. Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
  7. mysql hex 和 c_什么是MySQL HEX()函数,它与CONV()函数有何不同?
  8. Python小白的数学建模课-17.条件最短路径算法
  9. 标量函数,多语句表值函数,内嵌表值函数
  10. Mask-Predict: Parallel Decoding of Conditional Masked Language Models
  11. 结构体与对象的联系与区别
  12. 2020-09-10 保证软件开发过程遵循ISO 26262标准的十个主要进阶步骤
  13. delphi对比易语言_易语言转换delphi 易语言编程100例
  14. python3视频教程哪个好_python3入门视频教程
  15. c语言中pinMode的作用,Arduino编程基础与常用函数(详细)解析
  16. 抢票软件开发(三) 其余功能
  17. 支付宝快捷支付接入问题
  18. 钉钉用“数字生产力”重建未来想象力
  19. 学习编程是否真的有用?
  20. DataTables warning:table id = TableDate: Cannot reinitialise DataTable的解决办法

热门文章

  1. 一个简单案例教你如何用Typescript写Vuex
  2. react-native-webview禁止缩放
  3. 初识前端——个人总结
  4. Single-Shot Object Detection with Enriched Semantics
  5. node+express+mongDB实现简单登录注册
  6. MySQL慢查询处理之mysqldumpslow和mysqlsla
  7. C# winform打印总结 z
  8. 没有找到mfc100.dll
  9. 【CSS】CSS前期回顾(2)
  10. WEB程序员需要掌握的十大MySQL优化技巧