C++ 如何同步N个进程

C++ 如何同步N个进程,c++,C++,问题1。如果我对while循环进行注释,请参见下面的代码。我可以通过IPC进行通信。但是为什么使用while循环,我没有得到任何输出 问题2。是否有更好的方法在进程之间进行通信,而不是使用管道、信号或信号量?如果是,请提供一些示例 #include <iostream> #include <unistd.h> #include <sys/wait.h> #include <stdlib.h> using namespace std; int ma

问题1。如果我对while循环进行注释,请参见下面的代码。我可以通过IPC进行通信。但是为什么使用while循环,我没有得到任何输出

问题2。是否有更好的方法在进程之间进行通信,而不是使用管道、信号或信号量?如果是,请提供一些示例

#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
using namespace std;

int main(){
    int person_from_whom_token_starts =1;
    bool started = false ;
    int tok_value = 3;
    int iveToken = 4;
    int tok_value_const = 5;

    int x;
    bool y;

    int fd[2];
    int status = 0;
    pipe(fd);

    switch(fork()){
        case -1:
            cout << "ERRR" << endl;
            break;
        case 0:
            close(fd[0]);
            dup2(fd[1],1);
            while(1){
                cout << person_from_whom_token_starts << started << tok_value << iveToken << tok_value_const;
                sleep(3); 
            }
            exit(0);
            break;
        default:
            sleep(1);
            dup2(fd[0],0);
            close(fd[1]);

            cin >> x >> y;
            cout << "x: " << x << "\ny: " << y << endl;
            //wait(&status);
            break;
    }
    return 0;
}

您还没有考虑输出?@MuhammadRehanQadri:注释中包含一个指向正确函数文档的链接。你还想要什么?非常感谢Joachim Pileborg,插入Q1解决了我的问题。回答!请有人也回答问题2。使用管道是IPC最简单、最直接的方法。还有其他方法,如您提到的信号量或信号,但如果您想在进程之间来回发送数据,则不能使用所有进程同步原语,管道是发送数据最简单的方法。当然,你也可能想读一下。