核心内容摘要
男生和女生在一起拆拆拆轮滑很痛大全:那是关于热爱与“暴力”的
进程通信
进程通信的目的
匿名管道什么是管道呢站在文件描述表的角度站在内核的角度代码实现进程通信管道特征
进程通信的目的我们都知道进程是具有独立性的但是进程与进程之间需要进行通信因此进程之间的通信是需要消耗资源的①数据交流可以将一个进程的数据交给另一个进程②资源共享多个进程可以共享同一块内存资源③通知时间可以告诉一个进程它的子进程已经退出了④进程控制比如调试功能对另一个进程进行监控结论①进程之间的通信是共享一块内存空间的②这个内存空间是操作系统提供的③为什么不直接将一个进程的地址和数据直接动态的给另一个进程呢愿意就是进程之间具有独立性需要第三方提供内存④对于操作系统来说进程就是用户操作系统拒绝任何用户去访问操作系统但进程之间的通信又需要内存空间所以操作系统对底层进行了封装提供了一系列的系统调用接口。
匿名管道什么是管道呢管道就是把一个进程连接到另一个进程的数据流就是管道管道本质也是一个文件但我们访问不到它。
站在文件描述表的角度如何进行访问呢每一个进程在创建后都会有一个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(