
MacOSには、次のような単純なCプログラムがあります。
#include <stdlib.h>
#include <sys/wait.h>
#include <stdio.h>
#include <sys/ptrace.h>
int main(int argc, char *argv[]) {
pid_t pid = atoi(argv[1]);
printf("pid = %jd\n", (intmax_t) pid);
return ptrace(PT_ATTACHEXC, pid, 0, 0);
}
gcc/cc を使用してコンパイルすると、次のエラーが発生します。
In file included from my-waiter.c:4: /usr/include/sys/ptrace.h:99:38: error: unknown type name 'caddr_t' int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data); ^ 1 error generated.
ptrace()
OSXでこれを使用する方法を知っている人はいますか?私はそれをコンパイルする方法を知りません。
答え1
図からわかるようにユーザー 4556274#include <sys/types.h>
まず、これを行う必要があります(#include <sys/ptrace.h>
詳細については、ローカルのptrace(3)
マンページを参照)。