在 C 中的两个 indexpendent 进程之间共享数据
Share data between two indexpendent processes in C
如何在两个独立(无分支)进程之间共享数据(结构)。我想做的基本上是这样的:
process1:
Server(PID-399341): Waiting for input....
然后在另一个终端
process2:
Enter server process:
399341
Enter a string:
Hello
终于
process1:
"Hello" has been entered.
系统为QNX/POSIX。我有什么选择可以做到这一点?
谢谢!
使用命名管道(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 相同来对消息队列和共享内存段完成同样的操作。但我不确定。
如何在两个独立(无分支)进程之间共享数据(结构)。我想做的基本上是这样的:
process1:
Server(PID-399341): Waiting for input....
然后在另一个终端
process2:
Enter server process:
399341
Enter a string:
Hello
终于
process1:
"Hello" has been entered.
系统为QNX/POSIX。我有什么选择可以做到这一点?
谢谢!
使用命名管道(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 相同来对消息队列和共享内存段完成同样的操作。但我不确定。