繁体   English   中英

为多进程c / c ++程序编写共享队列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM