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

static int
killCmd (dummy, interp, objc, objv)
    ClientData dummy;
    Tcl_Interp *interp;
    int         objc;
    Tcl_Obj     *CONST objv[];
{
    int pid;
    int signal;
    int r;

    if (objc != 3) {
        Tcl_WrongNumArgs(interp, 1, objv, "pid signal");
        Tcl_SetObjResult(interp,Tcl_NewIntObj(1)); /* bad usage */
        return TCL_OK;
    }
    if (Tcl_GetIntFromObj(interp,objv[1],&pid) != TCL_OK) {
        Tcl_SetObjResult(interp,Tcl_NewIntObj(2)); /* not an integer */
        return TCL_OK;
    }

    if (Tcl_GetIntFromObj(interp,objv[1],&signal) != TCL_OK) {
        Tcl_SetObjResult(interp,Tcl_NewIntObj(3)); /* not a signal */
        return TCL_OK;
    }

    if (kill(pid,signal) == 0) {
        Tcl_SetObjResult(interp,Tcl_NewIntObj(0));
    } else {                    /* HUP=1,CONT=25 */
        Tcl_SetObjResult(interp,Tcl_NewIntObj(errno));
    } /* EINVAL=22,EPERM=1,ESRCH=3 */
    return TCL_OK;
}