fix: remove checking for waitpid
This commit is contained in:
parent
969fa07d28
commit
0c150e1f9d
|
@ -76,7 +76,11 @@ void chld_handler(int sig) {
|
||||||
if (WIFEXITED(status))
|
if (WIFEXITED(status))
|
||||||
{
|
{
|
||||||
job_data_array[i]->exit_status = WEXITSTATUS(status);
|
job_data_array[i]->exit_status = WEXITSTATUS(status);
|
||||||
job_data_array[i]->status = job_data_array[i]->exit_status == 0 ? COMPLETED : ABORTED;
|
job_data_array[i]->status = COMPLETED;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
job_data_array[i]->exit_status = 6;
|
||||||
|
job_data_array[i]->status = ABORTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,6 +123,8 @@ void io_handler(int sig) {
|
||||||
* @return 0 if finalization is completely successful, otherwise -1.
|
* @return 0 if finalization is completely successful, otherwise -1.
|
||||||
*/
|
*/
|
||||||
int jobs_fini(void) {
|
int jobs_fini(void) {
|
||||||
|
store_fini();
|
||||||
|
prog_fini();
|
||||||
for (size_t i = 0; i < MAX_JOBS; i++)
|
for (size_t i = 0; i < MAX_JOBS; i++)
|
||||||
{
|
{
|
||||||
if (job_data_array[i])
|
if (job_data_array[i])
|
||||||
|
@ -133,9 +139,6 @@ int jobs_fini(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
store_fini();
|
|
||||||
prog_fini();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,8 +381,7 @@ int jobs_run(PIPELINE *pline) {
|
||||||
for (size_t i = 0; i < size; i++)
|
for (size_t i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
if (waitpid(pids[i], &status, 0) == -1)
|
waitpid(pids[i], &status, 0);
|
||||||
exit(-1);
|
|
||||||
if (WIFEXITED(status))
|
if (WIFEXITED(status))
|
||||||
exit_code = WEXITSTATUS(status);
|
exit_code = WEXITSTATUS(status);
|
||||||
}
|
}
|
||||||
|
@ -440,14 +442,12 @@ int jobs_wait(int jobid) {
|
||||||
int return_stat = -1;
|
int return_stat = -1;
|
||||||
if (WIFEXITED(status)) {
|
if (WIFEXITED(status)) {
|
||||||
return_stat = WEXITSTATUS(status);
|
return_stat = WEXITSTATUS(status);
|
||||||
if (return_stat == 0)
|
|
||||||
{
|
|
||||||
job_data_array[jobid]->status = COMPLETED;
|
job_data_array[jobid]->status = COMPLETED;
|
||||||
|
job_data_array[jobid]->exit_status = return_stat;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
job_data_array[jobid]->status = ABORTED;
|
job_data_array[jobid]->status = ABORTED;
|
||||||
}
|
job_data_array[jobid]->exit_status = 6;
|
||||||
job_data_array[jobid]->exit_status = return_stat;
|
|
||||||
}
|
}
|
||||||
return return_stat;
|
return return_stat;
|
||||||
}
|
}
|
||||||
|
@ -503,7 +503,6 @@ int jobs_expunge(int jobid) {
|
||||||
|
|
||||||
if (job_data_array[jobid]->pipeline->capture_output) {
|
if (job_data_array[jobid]->pipeline->capture_output) {
|
||||||
close(job_data_array[jobid]->pipe[0]);
|
close(job_data_array[jobid]->pipe[0]);
|
||||||
// close(job_data_array[jobid]->pipe[1]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free_pipeline(job_data_array[jobid]->pipeline);
|
free_pipeline(job_data_array[jobid]->pipeline);
|
||||||
|
@ -545,11 +544,14 @@ int jobs_cancel(int jobid) {
|
||||||
if (kill(pid, SIGKILL) == -1)
|
if (kill(pid, SIGKILL) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
int status;
|
int status;
|
||||||
if (waitpid(pid, &status, 0) == -1)
|
waitpid(pid, &status, 0);
|
||||||
return -1;
|
|
||||||
if (WIFEXITED(status)) {
|
if (WIFEXITED(status)) {
|
||||||
job_data_array[jobid]->exit_status = WEXITSTATUS(status);
|
job_data_array[jobid]->exit_status = WEXITSTATUS(status);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
job_data_array[jobid]->exit_status = 9;
|
||||||
|
}
|
||||||
job_data_array[jobid]->status = CANCELED;
|
job_data_array[jobid]->status = CANCELED;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
*/
|
*/
|
||||||
char *store_get_string(char *var) {
|
char *store_get_string(char *var) {
|
||||||
if (!var)
|
if (!var)
|
||||||
return -1;
|
return NULL;
|
||||||
store_data *data = store_get_data(var);
|
store_data *data = store_get_data(var);
|
||||||
if (data)
|
if (data)
|
||||||
return data->value;
|
return data->value;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user