diff --git a/src/strace.c b/src/strace.c index a5caa7a..ef32b66 100644 --- a/src/strace.c +++ b/src/strace.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "platform.h" #include "strace.h" #include "../config.h" @@ -60,11 +61,19 @@ int strace(char * argv[]) static int _strace_child(char * argv[]) { - /* child */ - ptrace(PT_TRACE_ME, -1, NULL, (ptrace_data_t)0); - execvp(argv[0], argv); - _strace_error(argv[0], 1); - _exit(127); + errno = 0; + if(ptrace(PT_TRACE_ME, -1, NULL, (ptrace_data_t)0) == -1 + && errno != 0) + { + _strace_error("ptrace", 1); + _exit(125); + } + else + { + execvp(argv[0], argv); + _strace_error(argv[0], 1); + _exit(127); + } return 0; }