- Timestamp:
- Feb 24, 2007, 5:20:42 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
zzuf/trunk/src/zzuf.c
r1744 r1758 536 536 static void spawn_children(struct opts *opts) 537 537 { 538 int fd[3][2];538 int pipes[3][2]; 539 539 int64_t now = _zz_time(); 540 540 pid_t pid; … … 563 563 int ret; 564 564 #if defined HAVE_PIPE 565 ret = pipe( fd[j]);565 ret = pipe(pipes[j]); 566 566 #elif defined HAVE__PIPE 567 ret = _pipe( fd[j], 256, _O_BINARY);567 ret = _pipe(pipes[j], 512, _O_BINARY | O_NOINHERIT); 568 568 #endif 569 569 if(ret < 0) … … 574 574 } 575 575 576 pid = run_process(opts, fd);576 pid = run_process(opts, pipes); 577 577 if(pid < 0) 578 578 return; … … 583 583 for(j = 0; j < 3; j++) 584 584 { 585 close( fd[j][1]);586 opts->child[i].fd[j] = fd[j][0];585 close(pipes[j][1]); 586 opts->child[i].fd[j] = pipes[j][0]; 587 587 } 588 588 opts->child[i].bytes = 0; … … 756 756 if(!ZZUF_FD_ISSET(opts->child[i].fd[j], &fdset)) 757 757 continue; 758 fprintf(stderr, "data on fd %i for process %i\n", j, i); 758 759 759 760 ret = read(opts->child[i].fd[j], buf, BUFSIZ - 1); … … 833 834 #endif 834 835 835 static int run_process(struct opts *opts, int fd[][2])836 static int run_process(struct opts *opts, int pipes[][2]) 836 837 { 837 838 char buf[64]; … … 874 875 for(j = 3; j--; ) 875 876 { 876 close( fd[j][0]);877 if( fd[j][1] != files[j])878 { 879 dup2( fd[j][1], files[j]);880 close( fd[j][1]);877 close(pipes[j][0]); 878 if(pipes[j][1] != files[j]) 879 { 880 dup2(pipes[j][1], files[j]); 881 close(pipes[j][1]); 881 882 } 882 883 } … … 935 936 memset(&sinfo, 0, sizeof(sinfo)); 936 937 sinfo.cb = sizeof(sinfo); 937 DuplicateHandle(pid, (HANDLE)_get_osfhandle( fd[0][1]), pid,938 DuplicateHandle(pid, (HANDLE)_get_osfhandle(pipes[0][1]), pid, 938 939 /* FIXME */ &sinfo.hStdInput, 0, TRUE, DUPLICATE_SAME_ACCESS); 939 DuplicateHandle(pid, (HANDLE)_get_osfhandle( fd[1][1]), pid,940 DuplicateHandle(pid, (HANDLE)_get_osfhandle(pipes[1][1]), pid, 940 941 &sinfo.hStdError, 0, TRUE, DUPLICATE_SAME_ACCESS); 941 DuplicateHandle(pid, (HANDLE)_get_osfhandle( fd[2][1]), pid,942 DuplicateHandle(pid, (HANDLE)_get_osfhandle(pipes[2][1]), pid, 942 943 &sinfo.hStdOutput, 0, TRUE, DUPLICATE_SAME_ACCESS); 943 944 sinfo.dwFlags = STARTF_USESTDHANDLES;
Note: See TracChangeset
for help on using the changeset viewer.