Avoid busy loop in wordexp when substituted command closed its stdout
This commit is contained in:
parent
ba6f5ae50b
commit
ab087e0aa4
@ -1,3 +1,9 @@
|
||||
2013-01-21 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #15020]
|
||||
* posix/wordexp.c (exec_comm): Avoid busy loop when command has
|
||||
closed its stdout.
|
||||
|
||||
2013-01-20 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/power4/fpu/mpa.c: Don't include
|
||||
|
2
NEWS
2
NEWS
@ -10,7 +10,7 @@ Version 2.18
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
13951, 14200, 14317, 14327, 14496, 14964, 14981, 14982, 14985, 14994,
|
||||
14996, 15003, 15023.
|
||||
14996, 15003, 15020, 15023.
|
||||
|
||||
|
||||
Version 2.17
|
||||
|
@ -953,7 +953,12 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length,
|
||||
if ((buflen = TEMP_FAILURE_RETRY (__read (fildes[0], buffer,
|
||||
bufsize))) < 1)
|
||||
{
|
||||
if (TEMP_FAILURE_RETRY (__waitpid (pid, &status, WNOHANG)) == 0)
|
||||
/* If read returned 0 then the process has closed its
|
||||
stdout. Don't use WNOHANG in that case to avoid busy
|
||||
looping until the process eventually exits. */
|
||||
if (TEMP_FAILURE_RETRY (__waitpid (pid, &status,
|
||||
buflen == 0 ? 0 : WNOHANG))
|
||||
== 0)
|
||||
continue;
|
||||
if ((buflen = TEMP_FAILURE_RETRY (__read (fildes[0], buffer,
|
||||
bufsize))) < 1)
|
||||
@ -983,7 +988,12 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length,
|
||||
if ((buflen = TEMP_FAILURE_RETRY (__read (fildes[0], buffer,
|
||||
bufsize))) < 1)
|
||||
{
|
||||
if (TEMP_FAILURE_RETRY (__waitpid (pid, &status, WNOHANG)) == 0)
|
||||
/* If read returned 0 then the process has closed its
|
||||
stdout. Don't use WNOHANG in that case to avoid busy
|
||||
looping until the process eventually exits. */
|
||||
if (TEMP_FAILURE_RETRY (__waitpid (pid, &status,
|
||||
buflen == 0 ? 0 : WNOHANG))
|
||||
== 0)
|
||||
continue;
|
||||
if ((buflen = TEMP_FAILURE_RETRY (__read (fildes[0], buffer,
|
||||
bufsize))) < 1)
|
||||
|
Loading…
Reference in New Issue
Block a user