《妹妹是辣妹是真可爱》第一集像小

核心内容摘要

遇见“糖心vloe”,开启生活甜蜜新篇章
葫芦里卖的不是药,是旧时光里千万次的“心动”

风间由美:成熟魅力的巅峰绽放,韵味无穷的魅力解析

进程通信

进程通信的目的

匿名管道什么是管道呢站在文件描述表的角度站在内核的角度代码实现进程通信管道特征

进程通信的目的我们都知道进程是具有独立性的但是进程与进程之间需要进行通信因此进程之间的通信是需要消耗资源的①数据交流可以将一个进程的数据交给另一个进程②资源共享多个进程可以共享同一块内存资源③通知时间可以告诉一个进程它的子进程已经退出了④进程控制比如调试功能对另一个进程进行监控结论①进程之间的通信是共享一块内存空间的②这个内存空间是操作系统提供的③为什么不直接将一个进程的地址和数据直接动态的给另一个进程呢愿意就是进程之间具有独立性需要第三方提供内存④对于操作系统来说进程就是用户操作系统拒绝任何用户去访问操作系统但进程之间的通信又需要内存空间所以操作系统对底层进行了封装提供了一系列的系统调用接口。

匿名管道什么是管道呢管道就是把一个进程连接到另一个进程的数据流就是管道管道本质也是一个文件但我们访问不到它。

站在文件描述表的角度如何进行访问呢每一个进程在创建后都会有一个task_struct这个task_struct里面有一个叫做file_struct文件结构体这个结构体里边有一个叫做文件描述表本质就是一个数组0 1 2下表分别对应的是stdin,stdout,stderr,对应的外设就是键盘显示器显示器。

见图理解进程间的通信站在内核的角度代码实现进程通信子进程传给父进程数据 代码#includeiostream#includestdio.h#includeunistd.h#includesys/wait.h#includestring#includecstringusingnamespacestd;#defineNUM1024#defineN2voidWriter(intfd){string shello, i am a child!!!;pid_t idgetpid();charbuffer[NUM]{0};intcount0;while(true){snprintf(buffer,sizeof(buffer),%s-%d-%d,s.c_str(),id,count);write(fd,buffer,strlen(buffer));sleep(

;}}voidReader(intfd){charbuffer[NUM];while(true){buffer[0]0;size_t nread(fd,buffer,sizeof(buffer));if(n

{buffer[n]0;coutfather pid:getpid(): # bufferendl;}}}intmain(){//实现进程之间的通信intarr[N]{0};intppipe(arr);pid_t idfork();if(id

{perror(fork fial!);}if(id

{close(arr[0]);Writer(arr[1]);// 写exit(

;}close(arr[1]);Reader(arr[0]);//读pid_t fdwaitpid(id,nullptr,

;return0;}makefile:testfile:testfile.cc g-o $ $^.PHONY:clean clean:rm-f testfile运行结果运行视频管道特征①具有血缘关系的进程才能进行进程间的通信②管道只能是单项的③父子进程是会进程协同的同步与互斥的 —保护管道文件的数据安全④管道是面向字节流的⑤管道是基于文件的而文件的生命周期是随进程的

www.17c2025最新官方版下载-www.17c2025最新官方版下载应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123