如何在 Linux 中使用 chdir 函数?
How can I use chdir function in Linux?
我有一个问题,这是我在 testchdir.c 文件中的原始代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
if (argc < 2)
{
printf("Usage: %s <pathname\n",argv[0]);
exit(1);
}
if (chdir(argv[1]) == 0)
{
printf("success in chdir\n");
return 0;
}
else
{
printf("error happened");
exit(1);
}
}
在我的 Linux 系统中,我的原始路径是 /home/Tom3543
,然后当我使用 gcc -o testchdir testchdir.c
编译上面的代码时,它看起来不错。后来,我想改变我的路径并执行程序,所以我输入
./testchdir /home/tom3543/C++
"success in chdir" 出现在我的终端中,但我的路径在我的终端中仍然是 /home/Tom3543。有人可以帮我解释为什么吗?我对此感到困惑!
这是因为 shell 为您的程序启动了一个 new 进程,而您只更改了该新进程中的当前目录。 shells 进程将不受影响。
不幸的是(对你来说)没有真正好的(或合法的)方法来更改父进程(shell 的进程)的工作目录。
我有一个问题,这是我在 testchdir.c 文件中的原始代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
if (argc < 2)
{
printf("Usage: %s <pathname\n",argv[0]);
exit(1);
}
if (chdir(argv[1]) == 0)
{
printf("success in chdir\n");
return 0;
}
else
{
printf("error happened");
exit(1);
}
}
在我的 Linux 系统中,我的原始路径是 /home/Tom3543
,然后当我使用 gcc -o testchdir testchdir.c
编译上面的代码时,它看起来不错。后来,我想改变我的路径并执行程序,所以我输入
./testchdir /home/tom3543/C++
"success in chdir" 出现在我的终端中,但我的路径在我的终端中仍然是 /home/Tom3543。有人可以帮我解释为什么吗?我对此感到困惑!
这是因为 shell 为您的程序启动了一个 new 进程,而您只更改了该新进程中的当前目录。 shells 进程将不受影响。
不幸的是(对你来说)没有真正好的(或合法的)方法来更改父进程(shell 的进程)的工作目录。