TCP/IP网络编程 -- (十一)进程间通信
TCP/IP网络编程 -- (十一)进程间通信
进程间通信基本概念
因为两个进程间具有完全独立的内存空间,因此通信需要特殊的方式
通过管道实现进程间通信

管道并非进程的资源,与 socket 类似是操作系统的资源(也就不是 fork 的复制对象),两个进程通过操作系统提供的内存空间通信
#include <unistd.h>
int pipe(int filedes[2]);
成功返回 0,失败返回 -1
filedes[0]:通过管道接收数据时使用的文件描述符,即管道出口
filedes[1]:通过管道传输数据时使用的文件描述符,即管道入口
int fds[2];
pipe(fds);
pid = fork();
char str[] = "hello";
if (pid == 0)
write(fds[1], str, sizeof(str));
else
read(fds[0], buf, BUF_SIZE);
通过管道进行进程间双向通信
但是要注意管道中的数据是无主数据,先读的会读取走,因此如果子进程给父进程发了数据,子进程比父进程先读,那么数据又会被子进程读走
一般不会用一个管道来进行双向通信,而是用两个管道
分类:
后端开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!