1#include <stdio.h> 2#include <stdlib.h> 3 4#include <sys/syscall.h> 5#include <unistd.h> 6#include <fcntl.h> 7 8#ifndef SYS___pthread_chdir 9# define SYS___pthread_chdir 348 10#endif 11 12#ifndef SYS___pthread_fchdir 13# define SYS___pthread_fchdir 349 14#endif 15 16int __pthread_chdir(const char *path) 17{ 18 return syscall(SYS___pthread_chdir, path); 19} 20 21int __pthread_fchdir(int dirfd) 22{ 23 return syscall(SYS___pthread_fchdir, dirfd); 24} 25 26int main(void) 27{ 28 int dirfd; 29 30 dirfd = open("/", O_RDONLY); 31 if (dirfd == -1) 32 perror("open"), exit(1); 33 34 if (__pthread_chdir("/")) 35 perror("__pthread_chdir"); 36 37 if (__pthread_fchdir(dirfd)) 38 perror("__pthread_fchdir"); 39 40 return 0; 41} 42