在C中的两个索引相关进程之间共享数据

时间:2016-10-11 17:57:58

标签: c process posix qnx

如何在两个独立(无分支)进程之间共享数据(struct)。我想做的基本上是这样的:

process1:

Server(PID-399341): Waiting for input....

然后在另一个终端

process2:

Enter server process:

399341

Enter a string:

Hello

最后

process1:

"Hello" has been entered. 

系统是QNX / POSIX。我有什么选择呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用命名管道(FIFO)可以轻松实现。 只需选择与PID相同的FIFO名称即可。 这是服务器和客户端的工作代码。

server.c

    int fd;
    char buf[10], rdbuf[50];

    sprintf(buf,"%d",getpid());

    if(mkfifo(buf,0660) == -1)
            perror("mkfifo");

    printf("Server(PID-%d): Waiting for input..\n",getpid());

    fd = open(buf,O_RDONLY);

    read(fd, rdbuf, 50);

    printf("%s has been entered\n",rdbuf);

    close(fd);

    return 0;

client.c

    int fd;
    char wrbuf[50], buf[10];

    printf("Enter server process: ");
    scanf("%s",buf);
    getchar();

    fd = open(buf,O_WRONLY);

    printf("Enter message\n");

    gets(wrbuf);

    write(fd, wrbuf, strlen(wrbuf)+1);

我认为通过使键值与PID相同,可以对消息队列和共享内存段进行相同的操作。但我不确定。