| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) [code] 1 #include <unistd.h>; 2 3 int main(void) 4 { 5 chroot("/tmp"); 6 printf("after chroot,getcwd is %s/n",getcwd(NULL,0)); 7 8 chdir("/"); 9 printf("after chdir /,getcwd is %s/n",getcwd(NULL,0)); 10 11 return 0; 12 } 13[/code] 按理说chroot之后,根目录就是“/tmp”了,可为什么第9行的getcwd()的结果依然是“/”呢? [code][root@localhost 15]# ./a.out after chroot,getcwd is /root/prog/linuxC/bach/15 after chdir /,getcwd is / [/code] |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) 顶到第一页,朋友们帮忙看看呀,多谢多谢:) |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) chdir("/")更改当前工作目录到 /,用getcwd获取,结果应该是 / |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) [quote][i]原帖由 "twen345"]chdir("/")更改当前工作目录到 /,用getcwd获取,结果应该是 /[/quote 发表:[/i] 程序的运行结果是这样的。书上说应该是/tmp,是一本叫做《LinuxC函数库参考手册》,我已经发现不少错误了~~ |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) 但我不明白的是,chroot究竟有什么用呢? |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) 1、getcwd的第一个参数是NULL的时候会malloc,所以这样的用法不规范; 2、chroot需要P_FILESYS的权限,查看chroot的返回码确定函数调用是成功的(建议用超级用户去执行) 3、chroot后,即使chdir成功,用getcwd也看不出“绝对”路径,所以你的运行结果并没有错。可以在tmp下建一个test目录,chdir("/test")看看会不会成功。 [code] #include <unistd.h>; int main(void) { char *pwd; int ret; ret = chroot("/tmp"); if(ret != 0) { perror("chroot:"); exit(-1); } pwd = getcwd(NULL, 80); printf("after chroot,getcwd is [%s]/n",pwd); free(pwd); chdir("/test"); pwd = getcwd(NULL, 80); printf("after chdir /,getcwd is [%s]/n",pwd); free(pwd); return 0; }[/code] |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) 你的chroot肯定失败了 |
| ||
一个小程序的运行结果,不明白~~(getcwd和chroot函数) 明白了!!多谢多谢!! 原来chroot之后的“/”符号,指的就是原来的/tmp路径了,真的很感谢:-) |