-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 I'm trying to write a check whether I am a traced process.
Is the following code correct: #define _KMEMUSER #include <sys/cdefs.h> #include <sys/param.h> #include <sys/sysctl.h> #include <stdio.h> #include <unistd.h> #include <kvm.h> #include <err.h> #include <stdlib.h> int main(int argc, char **argv) { int traced = -1; kvm_t *kd; int cnt; struct kinfo_proc *info; size_t size = sizeof(info); kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open"); if (kd == NULL) err(EXIT_FAILURE, "kvm_open"); info = kvm_getprocs(kd, KERN_PROC_PID, getpid(), &cnt); if (info == NULL) err(EXIT_FAILURE, "kvm_getprocs"); traced = info->kp_proc.p_flag & P_TRACED; kvm_close(kd); printf("traced=%d\n", traced); return 0; } I'm getting weird results for info->kp_proc.p_flag indicating that I was timeouted during sleep. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXDHD0AAoJEEuzCOmwLnZsX1oQALCjHzn3DZpGsBDCBOmbT+bh Jb6xCf/TYCqQXW3gdkqVhY7AsKR/FObU+Wfw+H2tAjCYCdCUTiIFJYgDXZuxnK8u bE1ocQjiJz19lVLdW4kHAywntOW+1Wo+LSIXWR2oVp8YVle/xbiHkdmXuCDfu6Zj wx8VcM9ijOoTC3zsfyywDywtyVYggTvGEMSY2eWF9u1BV6CmUMLNat1rpXEK2/wM YjVWXJwHZDEYUpupEc5IMf/EIyEk3b/O5mt7b3L1FOYFSAFRedHf2xPPduYAPo0L KU0iozNRFQDeDXr2rDuHZMyqmzkrSOPLUP3rIRBEOPr4NrnCj5pSDP2Rjo4UUm7Y nMRE3Oy+POLbYTLcfQCiWiEWANtmP/6ps5pl/qpq+rDuNuElAtcsS1lbSmEaHxQL mNk0sheLvDPIG8kjqffRFgY8r7I0Y6eNOkumLghHFu206ZMLhG191puzEZA7nHGh S8XNfRaHRIRr/fW79dTl8fZ867jB/3d6lUVkZeYcy9CTx22emWOAMAdHrXnhcQQD bH1Rn6yGkbbmQujDWIWGKwbgJP4sPpkWrjj0d8+uoPuhlG8uUEYGXRd/10wfPPYv FlaNrSqdnnVJfUZJgraPUQvFyxfTDNrKGFLNvl8MFnmX5mtTjYqqKuPXUnXA80P7 aUBU/do74EyXgYUnu8mv =Ds5E -----END PGP SIGNATURE-----