Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. int cmd_waitfor(char param[])
  3. // waits for LASTPID or pid in param
  4. {
  5.  
  6. int             i, n, sel, sel_pid;
  7. char            *buf1k;
  8. unsigned        PID;
  9. short           STATE;
  10.  
  11. sel = param && strlen(param) > 0;
  12. sel_pid = LAST_PID;
  13. if (sel)
  14.         {
  15.         sel_pid = _atoi(param);
  16.         }
  17. if (0 == sel_pid)
  18.         return FALSE;
  19.  
  20.         #if LANG_ENG
  21.                 printf("  Awaing finish PID %d\n\r", sel_pid);
  22.         #elif LANG_RUS
  23.                 printf("  Ž¦¨¤ ¥¬ § ¢¥à襭¨ï PID %d\n\r", sel_pid);
  24.         #endif
  25.  
  26. buf1k = malloc(1024);
  27. if (NULL == buf1k)
  28.         return FALSE;
  29.  
  30. while(1)
  31.         {
  32.         for (i = 1;;i++)
  33.                 {
  34.                 n = kol_process_info(i, buf1k);
  35.                 PID = *(buf1k+30);
  36.                 STATE = *(buf1k+50);
  37.                 if (PID == sel_pid)
  38.                         if(9 == STATE)
  39.                                 goto exit_normal;
  40.                         else break;
  41.                 if (i == n)
  42.                         goto exit_normal;
  43.                 }
  44.         kol_sleep(10); // 100ms
  45.         }
  46.  
  47. exit_normal:
  48. free(buf1k);
  49. return TRUE;
  50.  
  51. }
  52.  
  53.