Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/param.h>
- #include <sys/sysctl.h>
- #if defined(__DragonFly__) || defined(__FreeBSD__)
- #include <sys/user.h>
- #endif
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- int main(int argc, char *argv[])
- {
- #if defined(__NetBSD__)
- int mib[6] = { CTL_KERN, KERN_PROC2, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc2), 1 };
- #elif defined(__OpenBSD__)
- int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
- #else
- int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
- #endif
- size_t buffer_size;
- #if defined(__NetBSD__) || defined(__OpenBSD__)
- if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
- #else
- if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
- #endif
- return 0;
- #if defined(__NetBSD__)
- struct kinfo_proc2 *proc = (struct kinfo_proc2 *) malloc(buffer_size);
- #else
- struct kinfo_proc *proc = (struct kinfo_proc *) malloc(buffer_size);
- #endif
- #if defined(__NetBSD__) || defined(__OpenBSD__)
- if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
- #else
- if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
- #endif
- free(proc);
- return 0;
- }
- #if defined(__APPLE__)
- printf("%lds %ldus\n", proc->kp_proc.p_un.__p_starttime.tv_sec, proc->kp_proc.p_un.__p_starttime.tv_usec);
- #elif defined(__DragonFly__)
- printf("%lds %ldus\n", proc->kp_start.tv_sec, proc->kp_start.tv_usec);
- #elif defined(__FreeBSD__)
- printf("%lds %ldus\n", proc->ki_start.tv_sec, proc->ki_start.tv_usec);
- #else
- printf("%lds %ldus\n", proc->p_ustart_sec, proc->p_ustart_usec);
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement