Created
December 6, 2012 02:25
-
-
Save bnoordhuis/4221344 to your computer and use it in GitHub Desktop.
OS X undocumented __pthread_chdir() and __pthread_fchdir() syscalls
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <sys/syscall.h> | |
#include <unistd.h> | |
#include <fcntl.h> | |
#ifndef SYS___pthread_chdir | |
# define SYS___pthread_chdir 348 | |
#endif | |
#ifndef SYS___pthread_fchdir | |
# define SYS___pthread_fchdir 349 | |
#endif | |
int __pthread_chdir(const char *path) | |
{ | |
return syscall(SYS___pthread_chdir, path); | |
} | |
int __pthread_fchdir(int dirfd) | |
{ | |
return syscall(SYS___pthread_fchdir, dirfd); | |
} | |
int main(void) | |
{ | |
int dirfd; | |
dirfd = open("/", O_RDONLY); | |
if (dirfd == -1) | |
perror("open"), exit(1); | |
if (__pthread_chdir("/")) | |
perror("__pthread_chdir"); | |
if (__pthread_fchdir(dirfd)) | |
perror("__pthread_fchdir"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment