ptrace (process trace system call) on Linux from D
mta`chrono
chrono at mta-international.net
Wed Apr 25 11:03:48 PDT 2012
Am 25.04.2012 18:36, schrieb Matej Nanut:
> Hello everyone,
>
> I would like to know how to call ptrace (the system call) from D.
>
> I don't know what to import or link. If my understanding is correct, I
> need to create a .di file of some sort with stuff declared in it. How
> would I do this?
>
> Thanks, Matej
Hello Matej,
I guess you're asking for http://linux.die.net/man/2/ptrace.
normally it's somewhere deep in druntime but I couldn't find it. Maybe
someone is able to add it for you. But neverthenless, you can just put
some declaration in your D file and call it.
----
import core.stdc.stdio;
import core.sys.posix.sys.types;
enum __ptrace_request
{
PTRACE_TRACEME = 0,
PTRACE_PEEKTEXT = 1,
PTRACE_PEEKDATA = 2,
PTRACE_PEEKUSER = 3,
PTRACE_POKETEXT = 4,
PTRACE_POKEDATA = 5,
PTRACE_POKEUSER = 6,
PTRACE_CONT = 7,
PTRACE_KILL = 8,
PTRACE_SINGLESTEP = 9,
PTRACE_GETREGS = 12,
PTRACE_SETREGS = 13,
PTRACE_GETFPREGS = 14,
PTRACE_SETFPREGS = 15,
PTRACE_ATTACH = 16,
PTRACE_DETACH = 17,
PTRACE_GETFPXREGS = 18,
PTRACE_SETFPXREGS = 19,
PTRACE_SYSCALL = 24,
PTRACE_SETOPTIONS = 0x4200,
PTRACE_GETEVENTMSG = 0x4201,
PTRACE_GETSIGINFO = 0x4202,
PTRACE_SETSIGINFO = 0x4203
}
extern(C) long ptrace(__ptrace_request request, pid_t pid, void *addr,
void *data);
void main()
{
// just call ptrace like you would do in C
}
----
More information about the Digitalmars-d-learn
mailing list