svn commit: trunk/busybox/procps
Denys Vlasenko
vda.linux at googlemail.com
Wed May 28 15:41:01 UTC 2008
> > pid_t pid;
> > pid_list *plist;
> >
> >+ xchdir("/proc");
> > d = opendir("/proc");
>
> I don't think that this will work. At least /me doesn't have a directory
> /proc/proc/ :)
opendir("/proc") uses absolute path.
# cat t.c
int main() {
chdir("/proc");
opendir("/proc");
return 0;
}
# gcc t.c
# strace ./a.out
execve("./a.out", ["./a.out"], [/* 32 vars */]) = 0
brk(0) = 0x804a000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7efe000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=52773, ...}) = 0
mmap2(NULL, 52773, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7edc000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0[\1\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0555, st_size=1253200, ...}) = 0
mmap2(NULL, 976604, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7ded000
mmap2(0xf7ed5000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe7) = 0xf7ed5000
mmap2(0xf7ed9000, 9948, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7ed9000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7dec000
set_thread_area({entry_number:-1 -> 12, base_addr:0xf7dec6b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xf7ed5000, 8192, PROT_READ) = 0
mprotect(0xf7eff000, 4096, PROT_READ) = 0
munmap(0xf7edc000, 52773) = 0
chdir("/proc") = 0
open("/proc", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3
fstat64(3, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
brk(0) = 0x804a000
brk(0x806b000) = 0x806b000
exit_group(0) = ?
More information about the busybox
mailing list