<分区>
我有一个调用 chdir() 来更改 cwd 的程序。但是,在程序完成后,cwd 变回调用程序的目录,而不是停留在调用 chdir() 指定的目录中。我编写了一个程序来测试 chdir() 是否真的更改到指定目录,发现 chdir() 正在做我推测的事情:在程序运行期间更改到指定目录,然后返回到执行程序的目录。
测试代码如下:
#include <stdio.h>
#include <unistd.h>
#define NAME_MAX 100
int main(int argc, char **argv)
{
char buf[NAME_MAX];
char *path = argv[1];
if (chdir(path) == -1) { /* change cwd to path */
fprintf(stderr, "error: could not change to dir %s\n", path);
return 1;
}
getcwd(buf, NAME_MAX);
printf("CWD is: %s\n", buf); /* print cwd as obtained from getcwd() */
return 0;
}
这是我终端的输出:
john@ubuntu:~/C/cli$ pwd
/home/john/C/cli
john@ubuntu:~/C/cli$ mkdir foobar
john@ubuntu:~/C/cli$ ./test.c foobar
CWD is: /home/john/C/cli/foobar
john@ubuntu:~/C/cli$ pwd
/home/john/C/cli
所以我的问题是,在程序完成 之后,我如何才能留在调用 chdir() 时指定的目录中?另外,我在 Ubuntu 12.04 上使用 gcc 进行编译。