Я тестирую решение для защиты от ошибок с помощью ptrace
метода
int main(int argc, char **argv) {
void *handle;
long (*go)(enum __ptrace_request request, pid_t pid);
// get a handle to the library that contains 'ptrace'
handle = dlopen ("libc.so", RTLD_LAZY);
// reference to the dynamically-resolved function 'ptrace'
go = dlsym(handle, "ptrace");
if (go(PTRACE_TRACEME, 0) < 0) {
puts("being traced");
exit(1);
}
puts("not being traced");
// cleanup
dlclose(handle);
return 0;
}
Когда я его выполняю, я всегда получаю остановленную ошибку,
# ./a.out
not being traced
[4]+ Stopped ./a.out
Затем я пыталсядобавить обработчик SIGSTOP вот так
int main(int argc, char **argv) {
signal(SIGSTOP, SIG_IGN);
И все равно получаю остановленную ошибку, есть идеи?