C 在线程函数中使用管道
我必须做一个包含两个线程的函数。一个必须读取一个管道,另一个必须在另一个管道中写入。但是我不知道如何将管道传递给thread函数,因为pthread_create的参数部分必须包含另一个结构。 如果这样更清楚一点,我会放一些代码C 在线程函数中使用管道,c,C,我必须做一个包含两个线程的函数。一个必须读取一个管道,另一个必须在另一个管道中写入。但是我不知道如何将管道传递给thread函数,因为pthread_create的参数部分必须包含另一个结构。 如果这样更清楚一点,我会放一些代码 void *readFather(Job *job){ write (desc1Pipe[0],job->in, job->size_in); } void *writeFather(Job *job){ if ((job->size=rea
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相关的东西都是新手。如果你有多个数据块,你可以将它们包装在一个结构中
struct readData
{
Job *job;
int fd;
};
...
struct readData readData;
readData.job = job;
readData.fd = pipeFd;
pthread_create(&pid1, NULL, readFather, &readData);
但是如果我将管道描述符放在结构中,它仍然会写入和读取管道中的数据?文件描述符只是int,所以是的,如果具有相同的int,您可以在另一个线程中使用它们。