热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何实现多个流程的管道?

如何解决《如何实现多个流程的管道?》经验,为你挑选了1个好方法。

我正在创建多个进程,我需要为每个进程创建两个未命名的管道.

对于每个子节点,将使用一个管道从父节点获取int值; 一个用于将int数组发送到父数组.家长会从孩子那里获取新数据时做一些事情.

基本代码:

#include 
#include 
#include 
#include 
#include 
#include  // for reaching unix operations


int main(int argc, char *argv[]){
    pid_t main = getpid();

    int N = 30;
    int i;
    pid_t* children = (pid_t*) malloc(sizeof(pid_t) * N);
    for(i = 0; i 

我尝试了许多没有成功的事情,我迷路了.你能帮我继续吗?

任何帮助表示赞赏!谢谢.



1> Daniel Klein..:

以下是如何为每个子进程设置一个管道,以便每个子进程写入父进程:

由于每个子项需要两个文件描述符,因此声明:

int fd[2 * N];

适当地初始化它们:

for (int i = 0; i 


i-th子进程中,使用:

write(fd[2*i + 1], write_buffer, SIZE) 

写入父级,并在父级中使用:

 read(fd[2*i], read_buffer, SIZE) 

从第 - i个孩子读.


关闭管道:

i第一个孩子里面,你可以使用

close(fd[2*i]) 

马上,看到你只是在写作.你写完电话后

close(fd[2*i + 1]) 

关闭管道的写入端.

父母的情况是平行的:当i你从第一个孩子读书时,你可以

close(fd[2*i + 1]) 

马上,因为你没有写作,并且在你完成阅读电话之后

close(fd[2*i])

关闭管道的读取端.


由于每个子进程需要两个管道,因此创建两个数组 - 一个包含用于写入父项的子项的管道,另一个包含用于写入子项的父项的管道.


推荐阅读
author-avatar
mobiledu2502861465
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有