#define _GNU_SOURCE #include #include #include #include #include #define NUM_THREADS 1 static pthread_attr_t attr; void *thr(void *arg) { if (pthread_create(&(pthread_t){0}, &attr, thr, 0)) abort(); return 0; } int main(void) { pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); for (int i = 0; i < NUM_THREADS; i++) if (pthread_create(&(pthread_t){0}, &attr, thr, 0)) abort(); int euid = geteuid(); for (int it = 0;; it++) { printf("%d\n", it); if (seteuid(euid)) { perror("seteuid"); abort(); } } }