如何在两个独立(无分支)进程之间共享数据(struct)。我想做的基本上是这样的:
process1:
Server(PID-399341): Waiting for input....
然后在另一个终端
process2:
Enter server process:
399341
Enter a string:
Hello
最后
process1:
"Hello" has been entered.
系统是QNX / POSIX。我有什么选择呢?
谢谢!
答案 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相同,可以对消息队列和共享内存段进行相同的操作。但我不确定。