C++ 如何同步N个进程
问题1。如果我对while循环进行注释,请参见下面的代码。我可以通过IPC进行通信。但是为什么使用while循环,我没有得到任何输出 问题2。是否有更好的方法在进程之间进行通信,而不是使用管道、信号或信号量?如果是,请提供一些示例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
#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最简单、最直接的方法。还有其他方法,如您提到的信号量或信号,但如果您想在进程之间来回发送数据,则不能使用所有进程同步原语,管道是发送数据最简单的方法。当然,你也可能想读一下。