version 1.1.2.19, 2013/12/12 21:59:01
|
version 1.1.2.21, 2013/12/12 23:36:31
|
Line 254 io_progOpen(prog_t * __restrict prg, u_int execNum)
|
Line 254 io_progOpen(prog_t * __restrict prg, u_int execNum)
|
pthread_mutex_lock(&prg->prog_mtx); |
pthread_mutex_lock(&prg->prog_mtx); |
for (i = 0; (execNum ? ret < execNum : 42) && i < array_Size(prg->prog_fds); i++) |
for (i = 0; (execNum ? ret < execNum : 42) && i < array_Size(prg->prog_fds); i++) |
if (!array_Get(prg->prog_fds, i)) { |
if (!array_Get(prg->prog_fds, i)) { |
printf("%d) %s!!! %d ret=%d\n", i, __func__, execNum, ret); |
|
f = e_popen(prg->prog_name, "r+", &pid); |
f = e_popen(prg->prog_name, "r+", &pid); |
#ifdef POPEN_STREAM |
#ifdef POPEN_STREAM |
if (!f) { |
if (!f) { |
Line 384 io_progCheck(prog_t * __restrict prg, int re)
|
Line 383 io_progCheck(prog_t * __restrict prg, int re)
|
#else |
#else |
(p = pio_pgetpid((int) array(prg->prog_fds, i, intptr_t)))) |
(p = pio_pgetpid((int) array(prg->prog_fds, i, intptr_t)))) |
#endif |
#endif |
if (waitpid(p->pid, &p->stat, WNOHANG) > 0) { | if (waitpid(p->pid, &p->stat, WNOHANG)) { |
clrbit(prg->prog_used, i); |
clrbit(prg->prog_used, i); |
#ifdef POPEN_STREAM |
#ifdef POPEN_STREAM |
e_pclose(array(prg->prog_fds, i, FILE*)); |
e_pclose(array(prg->prog_fds, i, FILE*)); |
Line 445 io_progAttach(prog_t * __restrict prg, int newOne)
|
Line 444 io_progAttach(prog_t * __restrict prg, int newOne)
|
} |
} |
pthread_mutex_unlock(&prg->prog_mtx); |
pthread_mutex_unlock(&prg->prog_mtx); |
|
|
/* not found free program */ | /* execute new one program */ |
if (!f && (i = io_progOpen2(prg)) > 0) { | if (newOne) { |
| if (f) |
| io_progOpen(prg, 1); |
| else if ((i = io_progOpen2(prg)) > -1) |
| /* not found free program */ |
#ifdef POPEN_STREAM |
#ifdef POPEN_STREAM |
f = array(prg->prog_fds, i, FILE*); | f = array(prg->prog_fds, i, FILE*); |
#else |
#else |
f = array(prg->prog_fds, i, intptr_t); | f = array(prg->prog_fds, i, intptr_t); |
#endif |
#endif |
} |
} |
|
|
/* execute new one program */ |
|
if (newOne && f) |
|
io_progOpen(prg, 1); |
|
|
|
return f; |
return f; |
} |
} |