diff libmenu/menu_console.c @ 13391:b6c3752d9544

handle sigchld in mplayer.c
author faust3
date Sun, 19 Sep 2004 18:45:11 +0000
parents 4e8887e99fef
children 26937d8c5c9e
line wrap: on
line diff
--- a/libmenu/menu_console.c	Sun Sep 19 18:36:18 2004 +0000
+++ b/libmenu/menu_console.c	Sun Sep 19 18:45:11 2004 +0000
@@ -245,15 +245,16 @@
   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;