os: add debugger_present() for linux (#10257)
parent
ab5a4cf4e5
commit
97b83a4986
|
@ -6,6 +6,8 @@ import strings
|
|||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/ptrace.h>
|
||||
|
||||
pub const (
|
||||
path_separator = '/'
|
||||
|
@ -64,6 +66,8 @@ fn C.getgid() int
|
|||
|
||||
fn C.getegid() int
|
||||
|
||||
fn C.ptrace(u32, u32, voidptr, int) u64
|
||||
|
||||
pub fn uname() Uname {
|
||||
mut u := Uname{}
|
||||
utsize := sizeof(C.utsname)
|
||||
|
@ -317,7 +321,15 @@ pub fn (mut f File) close() {
|
|||
C.fclose(f.cfile)
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn debugger_present() bool {
|
||||
// check if the parent could trace its process,
|
||||
// if not a debugger must be present
|
||||
$if linux {
|
||||
return C.ptrace(C.PTRACE_TRACEME, 0, 1, 0) == -1
|
||||
} $else $if macos {
|
||||
return C.ptrace(C.PT_TRACE_ME, 0, voidptr(1), 0) == -1
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue