⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 包含几个用不同方式(共享内存、socket、FIFO、消息队列等)实现进程通信的小程序
💻
字号:
/*************************************************************  
 * 用FIFO实现进程间通信的例子example2-03.c  example2-03.c  
 ************************************************************/  
  
 /*******************************************************************************************  
 * 首先,用自己的进程ID作为所创建的FIFO的名字的后一部分。 
 * 然后,客户端请求其进程号、一个空格、一个路径名和一个换行符组成。其中,路径名从标准输入读入。 
 * 接着,打开服务器的FIFO将自己的请求写入。  
 * 最后,从本客户的FIFO中读出服务器返回的内容并将其打印到标准输出,关闭客户的FIFO并删除。 
 * 
 * 程序的运行:可以在两个窗口中分别运行服务器端和客户端进程。 
               也可以在同一窗口中先将服务器进程作为后台来运行,然后运行客户进程。 
 *******************************************************************************************/  
  
/*****************************************   
 * 客户端程序example2-04.c 
 *****************************************/  
#include    <STDLIB.H>   
#include    <STDIO.H>   
#include    <UNISTD.H>   
#include    <ERRNO.H>   
#include    <SYS stat.h>   
#include    <FCNTL.H>   
  
#define     LINE        1024   
#define     FILE_MODE  (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)   
#define     SERV_FIFO  "/tmp/fifo.serv"   
  
int main()  
{  
    int     readf, writef;  
    size_t  len;  
    size_t  n;  
    char    *ptr, fifoname[LINE], buff[LINE];  
    pid_t   pid;  
  
    pid = getpid();  
    snprintf(fifoname, sizeof(fifoname), "tmp/fifo.%d", (long)pid);  
  
    if ((mkfifo(fifoname, FILE_MODE) < 0) && (errno != EEXIST)) //未产生文件或文件不存在,则   
        printf("can't create %s", fifoname);  
    snprintf(buff, sizeof(buff), "%ld", (long)pid);  
    len = strlen(buff);  
    ptr = buff + len;  
    fgets(ptr, LINE - len, stdin);  
    len = strlen(buff);  
    writef = open(SERV_FIFO, O_WRONLY, 0);  
    write(writef, buff, len);  
    readf = open(fifoname, O_RDONLY, 0);  
    while ((n = read(readf, buff, LINE)) > 0)  
        write(STDOUT_FILENO, buff, n);  
    close(readf);  
    unlink(fifoname);  
    exit(0);  
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -