| #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; |
| } |