1

2つのスレッドを含む関数を実行する必要があります。1つは一方のパイプを読み取り、もう一方は別のパイプに書き込む必要があります。しかし、pthread_createの引数部分に入れなければならない別の構造があるため、パイプをスレッド関数に渡す方法がわかりません。この方法でもう少し明確になったら、コードをいくつか入れます。

void *readFather(Job *job){
    write (desc1Pipe[0],job->in, job->size_in);
}

void *writeFather(Job *job){
if ((job->size=read (desc2Pipe[1], job->out,  job->max_out) > job->max_out) 
    kill(job->pidhijo,SIGKILL);                        
}

これらは私がpthread_createに与える関数です。

これがスレッドの呼び出しです。

pthread_t pid1; 
pthread_t pid2;
...
pthread_create(&pid1, NULL, readFather, &job);      
pthread_create(&pid2, NULL, writeFather, &job);

私を助けてください、私は私が考えることができるすべてをしました、私はすべてのC関連のものに本当に新しいです。

4

1 に答える 1

2

複数のデータがある場合は、それらを構造体でラップできます。

struct readData
{
    Job *job;
    int  fd;
};

...

struct readData readData;

readData.job = job;
readData.fd  = pipeFd;

pthread_create(&pid1, NULL, readFather, &readData);
于 2012-11-27T04:22:11.340 に答える