[英]Writing a Shared Queue for a multi-process c/c++ program
谁能给我一个使用C / C ++的多进程共享队列(FIFO)的好例子吗?
请注意,我不是在寻找基于线程(pthread)的实现。 虽然我也欢迎多线程的建议。
基本上是在寻找可以使用fork和exec的东西,因为我已经使用fork / exec编写了应用程序。
** IPC管道也不是我想要的东西,因为如果发送方/接收方两个进程中的任何一个死亡,它们都会死掉。***我想要的不是暂时的,即队列可以等待另一个进程变为活动状态?
我已经在Intel TBB和boost线程库中找到了线程解决方案。 但是我正在共享内存域中寻找更多东西。
对于IPC(进程间通信),我在Unix系统上使用了管道,这是一个示例。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#define BUFF_SIZE 50
#define READ 0
#define WRITE 1
int main() {
char write_msg[BUFF_SIZE] = "Hi, this is child proces!!!";
char read_msg[BUFF_SIZE];
int fd[2];
pid_t pid;
pipe(fd);
pid = fork();
if (pid == 0) {
close(fd[READ]);
write(fd[WRITE], write_msg, strlen(write_msg) + 1);
close(fd[WRITE]);
}
else {
close(fd[WRITE]);
read(fd[READ], read_msg, BUFF_SIZE);
printf("The message is: %s", read_msg);
close(fd[READ]);
}
return 0;
}
这在Windows上不起作用,但是如果我在您的位置,我会寻找一种使用管道(或其他IPC机制)的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.