如何同步N个进程

时间:2014-04-14 16:23:48

标签: c++

Q1。 (见下面的代码)如果我评论while循环。我可以通过IPC进行沟通。但为什么使用while循环,我没有输出?

Q2。是否有更好的方法在进程之间进行通信而不是使用管道(如果是,则通过信号或信号量,然后提供一些示例。

#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;
}

0 个答案:

没有答案