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