static unsigned int nprocs, tcbtabsize;
static const char *progname;
-static int detach(struct tcb *tcp, int sig);
+static int detach(struct tcb *tcp);
static int trace(void);
static void cleanup(void);
static void interrupt(int sig);
would SIGSTOP it and wait for its SIGSTOP notification forever. */
static int
-detach(struct tcb *tcp, int sig)
+detach(struct tcb *tcp)
{
int error = 0;
#ifdef LINUX
* would be left stopped (process state T).
*/
catch_sigstop = (tcp->flags & TCB_IGNORE_ONE_SIGSTOP);
- error = ptrace(PTRACE_DETACH, tcp->pid, (char *) 1, sig);
+ error = ptrace(PTRACE_DETACH, tcp->pid, (char *) 1, 0);
if (error == 0) {
/* On a clear day, you can see forever. */
}
break;
}
if (WSTOPSIG(status) == SIGSTOP) {
- ptrace_restart(PTRACE_DETACH, tcp, sig);
+ ptrace_restart(PTRACE_DETACH, tcp, 0);
break;
}
error = ptrace_restart(PTRACE_CONT, tcp,
#if defined(SUNOS4)
/* PTRACE_DETACH won't respect `sig' argument, so we post it here. */
- if (sig && kill(tcp->pid, sig) < 0)
- perror("detach: kill");
- sig = 0;
- error = ptrace_restart(PTRACE_DETACH, tcp, sig);
+ error = ptrace_restart(PTRACE_DETACH, tcp, 0);
#endif /* SUNOS4 */
if (!qflag)
printtrailer();
}
if (tcp->flags & TCB_ATTACHED)
- detach(tcp, 0);
+ detach(tcp);
else {
kill(tcp->pid, SIGCONT);
kill(tcp->pid, SIGTERM);
tprints(" <unfinished ...>");
printtrailer();
}
- detach(tcp, 0);
+ detach(tcp);
} else {
ptrace(PTRACE_KILL,
tcp->pid, (char *) 1, SIGTERM);