422 |
|
r_queue[i].parent = NULL; |
423 |
|
r_queue[i].clipset = NULL; |
424 |
|
r_queue[i].slights = NULL; |
425 |
– |
r_queue[i].revf = raytrace; |
425 |
|
samplendx++; |
426 |
|
rayclear(&r_queue[i]); |
427 |
|
rayvalue(&r_queue[i]); |
467 |
|
if (r_proc[ray_pnprocs].pid < 0) |
468 |
|
error(SYSTEM, "cannot fork child process"); |
469 |
|
close(p1[0]); close(p0[1]); |
470 |
+ |
/* |
471 |
+ |
* Close write stream on exec to avoid multiprocessing deadlock. |
472 |
+ |
* No use in read stream without it, so set flag there as well. |
473 |
+ |
*/ |
474 |
+ |
fcntl(p1[1], F_SETFD, FD_CLOEXEC); |
475 |
+ |
fcntl(p0[0], F_SETFD, FD_CLOEXEC); |
476 |
|
r_proc[ray_pnprocs].fd_send = p1[1]; |
477 |
|
r_proc[ray_pnprocs].fd_recv = p0[0]; |
478 |
|
r_proc[ray_pnprocs].npending = 0; |