Hi all,
The ptrace(2) man page is probably outdated. I used PT_DETACH in the
following code, but it didn't run ./test. I also tried to use
ptrace(PT_DETACH, pid, (caddr_t)1, 0) to detach, but it failed too.
BTW, if I omit wait(0) and ptrace(PT_DETACH, ...) in the code, after
it runs there is a process sticking to the system. Even kill -9 can't
kill it.
$ ps aux | grep jyliu
...
jyliu 423 0.0 0.1 216 100 p2 TX 7:41AM 0:00.00 (test)
...
$ kill -9 423
$ ps aux | grep jyliu
...
jyliu 423 0.0 0.1 216 100 p2 TX 7:41AM 0:00.00 (test)
...
So it's still there. Quite funny. Any clue?
Jiangyi
---code begins here
#include <unistd.h>
#include <sys/types.h>
#include <sys/ptrace.h>
int main()
{
pid_t pid;
if(!(pid=fork())) {
/* child */
ptrace(PT_TRACE_ME, 0, 0, 0);
puts("child speaking");
execve("./test", NULL, NULL);
} else {
wait(0);
ptrace(PT_DETACH, pid, 0, 0);
exit(0);
}
}
---code ends here
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message