linux 中管道的全双工通信(fork()父进曾和子进程执行先后顺序是不确定的)

原创 2013年12月02日 13:53:45

代码:

#include<stdio.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
void sondo(int fd2read,int fd1write)
{
    char *message="hello world";
    char message1[100];  
 
    write(fd1write,message,100);
    
    read(fd2read,message1,100);
    printf("parent give son message   %s",message1);
}

void parentdo(int fd1write,int fd2read)
{
    char message1[100];
    char *message="hello world my name is bai ai jie";
    write(fd1write,message,strlen(message)+1);  
    read(fd2read,message1,100);
    printf("son give parent  message      %s",message1);

}
int main(void)
{
    int fd1[2],fd2[2];
    int stat_val;
    pid_t pid;
    if(pipe(fd1))
    {
        printf("管道1或者管道2创建失败");
        exit(0);
    }
    if(pipe(fd2))
    {
        printf("管道2创建失败哦~");
        exit(0);
    }
    pid=fork();
    switch(pid){
        case -1:
            printf("进程没有创建成功");
            exit(0);

        case 0:
            
            printf("儿子进程");
            close(fd1[1]);
            close(fd2[0]);
            sondo(fd1[0],fd2[1]);
            exit(0);
        default:
            printf("父亲进程");
    
            close(fd1[0]);
            close(fd2[1]);
            parentdo(fd1[1],fd2[0]);
            
            exit(0);

    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux下用管道实现进程全双工通信的代码

直接看代码, 里面已经有注释了。   主程序: int main() { char buf[256]; int fdin[2]; int fdout[2]; int p...

socketpair创建双向通信的管道(全双工通信)

socketpair创建双向通信的管道(全双工通信)

套接字(全双工)实现进程间通信

特点: sv【0】和sv【1】可读可写。每个进程固定用一个接口。 写数据时:通道不满不阻塞; 读数据时:通道里没数据时阻塞。可用fcntl设置为非阻塞。 创建: int socketpair...

进程间通信:同步双工管道

因为工作需要,需要设计出一个双工的IPC。(转载请指明出处)在一番比较后,我发现管道是比较符合我们的需求的。但是我们需求要求管道的对方是可信任的,而在vista以下系统是没有GetNamedPipeC...

验证全双工管道两端同时写不会干扰

半双工管道只能一端写一端读逻辑清晰,但是全双工管道两端都可读可写,某些逻辑可能不那么清晰,比如两端同时写的时候数据是否相互会覆盖?下面验证这个问题,父进程和子进程同时写一个全双工管道socketpai...

全双工实现服务器与客户端的通信

/* * 服务器端 */ package TestServer; import javax.swing.*; import java.awt.*; import java.io.*; impor...

让C/S进行全双工通信的WebSocket协议

超文本传输协议(HTTP)作为一种简单的协议,在面对功能日益丰富的 Web应用时,遇到了如下瓶颈:1、在客户端请求时,会建立一个TCP连接,然后发送请求,服务端给出响应,然后连接就关闭了。(现在的HT...

【Cubieboard2】配置编译内核支持SPI全双工通信驱动

1,cubieboard2 A20系列,无论是官方还是社区的系统,默认都是不支持SPI总线驱动的。需要重新编译配置内核,修改文件才能支持SPI全双工通信。本文以Cuieboard2 Debain为例,...

Java实现全双工串口通信

依据 《利用Java实现串口全双工通讯》蒋清野 更新。 更新1:修正其源代码返回的字符数比发送的字符数滞后的BUG 更新2:修正javax.comm的BUG。此BUG表现为 java BlackB...

由进程间通讯引发的对半双工和全双工的思考

使用方法才是确定管道是全双工还是半双工的真正定义来源.而并不单单是一个特性.
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)