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