0

我试图为大学项目使用管道与进程通信 pthread。我用管道创建了一个结构,并将该结构传递给 pthread,以便它可以在管道 [0] 上侦听,并且在其余代码上,我尝试将字符串发送到正在运行的 pthread。

这是我的代码:

#include <unistd.h>
#include <string>
#include <unistd.h>
#include <stdio.h>
#include <iostream>
#include <pthread.h> 

using namespace std;

struct Pipefd{

    int pipe[2];
    string name;

};

void* listenProcess(void* x){

    Pipefd* pf = reinterpret_cast<Pipefd*>(x);

    close(0);
    dup(pf->pipe[0]);

    //here i try to see if the struct i send is ok, but this is not printed.
    cout << "pf.name: " << pf->name << endl;

    string recive;
    while(getline(cin,recive)){

        cout << "recive: " << recive << endl;

    }

    cout << "Problem with getline" << endl;

}


int main(int argc, char *argv[]) {

    Pipefd myPipe;

    myPipe.name = "Test";
    pipe(myPipe.pipe);

    void* test = reinterpret_cast<void*>(&myPipe);
    pthread_t tid;
    pthread_create(&tid,NULL, &listenProcess,test);

    close(1);
    dup(myPipe.pipe[1]);

    cout << "This is a message" << endl;

    pthread_join(tid,NULL);
}

如果有人可以回复我有关如何完成这项工作的一些想法,那就太棒了,如果没有,谢谢你的时间。

4

0 回答 0