私は現在、2つのスレッド(メインスレッドと2つ目のスレッド)間のパイプを通じてデータを送信しようとしていますが、ファイルディスクリプタについてはerrno 9を取得します。 スレッドが関わっているときにファイル記述子が重複していると思っていましたが、ここではそうではないようです。 通常、 "read from bf hi"が返されますが、そうではありません。 この問題の解決にお手伝いできますか?おかげさまで は、ここでは、コードパイプがpthread_tで動作していない
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
pthread_mutex_t mutex;
int tube[2];
void * fonction(){
if(close(tube[0])==-1){
perror("close error \n");
exit(EXIT_FAILURE);
}
printf("son \n");
if(write(tube[1],"hi",2)<0){
perror("write error \n");
exit(EXIT_FAILURE);
}
printf("errno %d \n",errno);
pthread_exit(NULL);
}
int main(){
pthread_t a;
if(pipe(tube)==-1){
perror("pipe error \n");
exit(EXIT_FAILURE);
}
char buffer[2];
pthread_mutex_init(&mutex,NULL);
close(tube[1]);
pthread_create(&a,NULL,fonction,&tube[1]);
pthread_join(a,NULL);
read(tube[0],buffer,2);
printf("read from bf %s \n",buffer);
return EXIT_SUCCESS;
}
psです:timrauは(Pthread_t not startingが)私はpthread_joinをを使用しますが、私はそれが私がスレッドがあるときに、ファイル記述子が重複したと思って
私はclose()を使用していると思いますが、私はそれについてはわかりません – kevin556