version 1.89, 2007/09/29 09:02:05 |
version 1.90, 2007/09/29 09:47:23 |
|
|
if (job->cmdFILE == NULL) { |
if (job->cmdFILE == NULL) { |
Punt("Error creating command file"); |
Punt("Error creating command file"); |
} |
} |
(void)fcntl(fileno(job->cmdFILE), F_SETFD, 1); |
(void)fcntl(fileno(job->cmdFILE), F_SETFD, FD_CLOEXEC); |
/* |
/* |
* Send the commands to the command file, flush all its buffers |
* Send the commands to the command file, flush all its buffers |
* then rewind and remove the thing. |
* then rewind and remove the thing. |
|
|
*/ |
*/ |
JobMakeArgv(job, argv); |
JobMakeArgv(job, argv); |
|
|
/* |
/* Create the pipe by which we'll get the shell's output. |
* If we're using pipes to catch output, create the pipe by which we'll |
|
* get the shell's output. If we're using files, print out that we're |
|
* starting a job and then set up its temporary-file name. |
|
*/ |
*/ |
if (pipe(fd) == -1) |
if (pipe(fd) == -1) |
Punt("Cannot create pipe: %s", strerror(errno)); |
Punt("Cannot create pipe: %s", strerror(errno)); |
job->inPipe = fd[0]; |
job->inPipe = fd[0]; |
job->outPipe = fd[1]; |
job->outPipe = fd[1]; |
(void)fcntl(job->inPipe, F_SETFD, 1); |
(void)fcntl(job->inPipe, F_SETFD, FD_CLOEXEC); |
(void)fcntl(job->outPipe, F_SETFD, 1); |
(void)fcntl(job->outPipe, F_SETFD, FD_CLOEXEC); |
|
|
if (nJobs >= maxJobs && !(job->flags & JOB_SPECIAL) && |
if (nJobs >= maxJobs && !(job->flags & JOB_SPECIAL) && |
maxJobs != 0) { |
maxJobs != 0) { |