diff options
Diffstat (limited to 'libmenu/menu_console.c')
-rw-r--r-- | libmenu/menu_console.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/libmenu/menu_console.c b/libmenu/menu_console.c index 057c3cf763..503d25a11e 100644 --- a/libmenu/menu_console.c +++ b/libmenu/menu_console.c @@ -245,15 +245,16 @@ static void check_child(menu_t* menu) { r = select(max_fd+1,&rfd, NULL, NULL, &tv); if(r == 0) { r = waitpid(mpriv->child,&child_status,WNOHANG); - if(r > 0) { - printf("child died\n"); - for(i = 0 ; i < 3 ; i++) - close(mpriv->child_fd[i]); - mpriv->child = 0; - mpriv->prompt = mpriv->mp_prompt; - //add_line(mpriv,"Child process exited"); - } else if(r < 0) - printf("waitpid error: %s\n",strerror(errno)); + if(r < 0){ + if(errno==ECHILD){ ///exiting childs get handled in mplayer.c + for(i = 0 ; i < 3 ; i++) + close(mpriv->child_fd[i]); + mpriv->child = 0; + mpriv->prompt = mpriv->mp_prompt; + //add_line(mpriv,"Child process exited"); + } + else printf("waitpid error: %s\n",strerror(errno)); + } } else if(r < 0) { printf("select error\n"); return; |