zoukankan      html  css  js  c++  java
  • (FIFO)有名管道在无亲缘进程间的通信

    原文地址:

    两个程序,一写一读,测试有名管道在无亲缘关系的进程间的通信:

    读管道程序:main.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/types.h>

    #define FIFO_NAME "myfifo"
    #define BUF_SIZE 1024

    int main(void) {
    int fd;
    char buf[BUF_SIZE];

    umask(0);
    fd = open(FIFO_NAME, O_RDONLY);
    read(fd, buf, BUF_SIZE);
    printf("Read content: %s\n", buf);
    close(fd);
    exit(0);
    }



    写管道程序:client.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <string.h>

    #define FIFO_NAME "myfifo"
    #define BUF_SIZE 1024

    int main(void) {
    int fd;
    char buf[BUF_SIZE] = "Hello procwrite, I come from process named procread!";

    umask(0);

    if (mkfifo(FIFO_NAME, S_IFIFO | 0666) == -1) {
    perror("mkfifo error!");
    exit(1);
    }


    if ((fd = open(FIFO_NAME, O_WRONLY)) == -1) { 判断是否有打开fifo
    perror("open error!");
    exit(1);
    }


    write(fd, buf, strlen(buf) + 1); /*strlen(buf)+1 是把'\0'也写过去*/

    close(fd);
    //unlink(FIFO_NAME); 删除fifo文件

    exit(0);
    }



    Makefile

    all:main
    main:
    gcc -g -Wall -O0 main.c -o main

    client:
    gcc -g -Wall -O0 client.c -o client

    clean:
    rm *.o main client




    运行及输出
    编译后,先运行 client ( 运行后处于阻塞状态 ) 
    打开另一个终端运行 main 程序,输出:引用

    Read content: Hello procwrite, I come from process named procread!

  • 相关阅读:
    iview正在加载和关闭加载
    vue实现input输入框只能输入中文
    vue添加遮罩
    JSONP的实现原理
    vue-resource 实现 get, post, jsonp请求
    vue实例的生命周期
    IDE更新索引
    org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
    springmvc过滤的静态资源不起作用
    mybatis返回集合类型为map时
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2287445.html
Copyright © 2011-2022 走看看