用管道传递pthread

时间:2013-11-12 16:55:21

标签: c++ pthreads pipe

我试图通过管道传递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);
}

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

0 个答案:

没有答案