#if defined(linux) #include <stdio.h> /* printf() */ #include <unistd.h> /* syscall() */ #include <sys/syscall.h> /* __NR_capget */ #include <sys/types.h> /* uid_t */ #include <linux/capability.h> /* _LINUX_CAPABILITY_VERSION */ int main() { struct __user_cap_header_struct h; struct __user_cap_data_struct d; int syscall_result; if (getuid() == 0) fprintf(stderr, "Running as root\n"); h.version = _LINUX_CAPABILITY_VERSION; h.pid = 0; syscall_result = syscall(__NR_capget, &h, &d); if (syscall_result >= 0) { fprintf(stderr, "capget result:\n" "effective %#x\n" "permitted %#x\n" "inheritable %#x\n", d.effective, d.permitted, d.inheritable); } else { perror("capget"); } return 0; } #else #include <stdio.h> int main() { fprintf(stderr, "This program is Linux-specific\n"); return 0; } #endif