home *** CD-ROM | disk | FTP | other *** search
/ PDA Software Library / pdasoftwarelib.iso / PSION / UTILS / SHELL3A / SRC.ZIP / OPL / KILL.OPL < prev    next >
Encoding:
Text File  |  1996-09-03  |  957 b   |  40 lines

  1. Rem ****************************************
  2. Rem * Shell3a external command - kill.opl
  3. Rem * ╕ Nick Murray February 1996
  4. Rem *
  5. Rem * kill - Terminate a specified process
  6. Rem *  (can't be used on system processes)
  7. Rem ****************************************
  8. PROC kill%:(n%)
  9. LOCAL ret%,buf$(15),str%,addr%,pattern$(2),pid%
  10.     ONERR ErrTrap::
  11.     If n%<>2
  12.         PRINT "Usage: kill <process id>"
  13.     ELSE
  14. Rem get the name of the process to kill
  15.         pid%=EVAL(PEEK$(argv%(2)))
  16.         addr%=ADDR(buf$)
  17.         pattern$="*"+CHR$(0)
  18.         DO
  19.             str%=ret%
  20.             ret%=CALL($0B88,ret%,0,0,UADD(addr%,1),UADD(ADDR(pattern$),1))
  21.             IF ret%=pid%
  22.                 POKEB addr%,CALL($B9,0,0,0,0,UADD(addr%,1))
  23.                 ret%=EVAL(RIGHT$(buf$,2))
  24.                 IF ret%<7
  25.                     PRINT "System process:",buf$
  26.                 ELSE
  27.                     CALL($0D88,pid%)
  28.                     PRINT buf$,"killed"
  29.                 ENDIF
  30.                 RETURN
  31.             ENDIF
  32.         UNTIL ret%=str%
  33.         PRINT "Process not found"
  34.     ENDIF
  35.     RETURN
  36. ErrTrap::
  37.     ONERR off
  38.     PRINT err$:(ERR)
  39. ENDP
  40.