私の問題は、パイプをリッスンできるように pthread を実行する必要があることです。問題は、構造体にパイプがあることです。
struct Pipefd {
int tuberia1[2];
int tuberia2[2];
};
これは私がpthreadを作成する方法です:
intptr_t prueba = pf.tuberia2[0];
pthread_create(NULL,NULL, listenProcess,reinterpret_cast<void*>(prueba));
そして、ここに私が呼び出すメソッドがあります:
void *listenProcess(void* x){
int a = reinterpret_cast<intptr_t>(x);
close(0);
dup(a);
string word;
while(getline(cin,word)){
cout << "Termino y llego: " << word << endl;
}
}
コンパイルはできますが、セグメンテーション違反が発生しますが、理解できません。C ++の初心者です。すでに多くの検索を行っており、機能する答えが見つかりませんでした。「reinterpret_cast」は、エラーなしでコンパイルすることがわかった回避策です。
お時間をいただきありがとうございます。私の英語については申し訳ありません。それは私の母国語ではないので、あなたが指摘した文法エラーは、よく理解できます。