только у меня так:
Код
void* child_func(void* arg)
{
struct args_t* args = (args*)arg;
args->size = read(args->fd, args->packet, args->supposed_size);
args->event.flag = 1;
pthread_cond_signal(&args->event.event);
return 0;
}
int parent(struct args_t *args)
{
pthread_t child;
struct timespec tm;
if ( pthread_create(&child, NULL, child_func, args) != 0 )
return ERR_CREATE;
// задание таймаута
...
while(!args->event.flag)
{
res = pthread_cond_timedwait(&args->event.event, &args->event.lock, &tm);
if (res == ETIMEDOUT)
return ERR_TIMEOUT;
}
args->event.flag = 0;
return args->errors;
}