* external.cc (fillout_pinfo): If start_time is 0, wait a while before

returning the pinfo structure.
* fhandler.cc (fhandler_base::open_setup): Convert from inline.
* fhandler.h (fhandler_base::open_setup): Declare.
* fhandler_console.cc (fhandler_console::open_setup): Always call
fhandler_base::open_setup.
* fhandler_tty.cc (fhandler_pty_slave::open_setup): Ditto.
(fhandler_pty_master::open_setup): Ditto.
This commit is contained in:
Christopher Faylor
2013-10-24 15:26:21 +00:00
parent 84e7adad1d
commit 4ae84b2251
6 changed files with 28 additions and 1 deletions

View File

@@ -76,6 +76,13 @@ fillout_pinfo (pid_t pid, int winpid)
}
else if (nextpid || p->pid == pid || (winpid && thispid == (DWORD) pid))
{
/* It is possible that this pinfo is not completely set up yet. Wait
a while if so. */
for (int i = 0; i < 2000; i++)
if (p->start_time)
break;
else
Sleep (1);
ep.ctty = (p->ctty < 0 || iscons_dev (p->ctty)) ? p->ctty : device::minor (p->ctty);
ep.pid = p->pid;
ep.ppid = p->ppid;