Posted to tcl by venks at Tue Dec 16 17:01:56 GMT 2014view raw

  1.  
  2. static int
  3. killCmd (dummy, interp, objc, objv)
  4. ClientData dummy;
  5. Tcl_Interp *interp;
  6. int objc;
  7. Tcl_Obj *CONST objv[];
  8. {
  9. int pid;
  10. int signal;
  11. int r;
  12.  
  13. if (objc != 3) {
  14. Tcl_WrongNumArgs(interp, 1, objv, "pid signal");
  15. Tcl_SetObjResult(interp,Tcl_NewIntObj(1)); /* bad usage */
  16. return TCL_OK;
  17. }
  18. if (Tcl_GetIntFromObj(interp,objv[1],&pid) != TCL_OK) {
  19. Tcl_SetObjResult(interp,Tcl_NewIntObj(2)); /* not an integer */
  20. return TCL_OK;
  21. }
  22.  
  23. if (Tcl_GetIntFromObj(interp,objv[1],&signal) != TCL_OK) {
  24. Tcl_SetObjResult(interp,Tcl_NewIntObj(3)); /* not a signal */
  25. return TCL_OK;
  26. }
  27.  
  28. if (kill(pid,signal) == 0) {
  29. Tcl_SetObjResult(interp,Tcl_NewIntObj(0));
  30. } else { /* HUP=1,CONT=25 */
  31. Tcl_SetObjResult(interp,Tcl_NewIntObj(errno));
  32. } /* EINVAL=22,EPERM=1,ESRCH=3 */
  33. return TCL_OK;
  34. }
  35.