c - 如何在 Linux 中使用 chdir 功能?

标签 c linux unix chdir

我有一个问题,这是我在 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 为您的程序启动了一个进程,而您只更改了该新进程中的当前目录。 shell 进程将不受影响。

不幸的是(对您来说)没有真正好的(或合法的)方法来更改父进程(shell 进程)的工作目录。

关于c - 如何在 Linux 中使用 chdir 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503991/

相关文章:

c - 我如何使用 fopen() 接受函数的参数(C 编程)

c - 即使没有其他人使用线程,线程也无法获取锁

mysql - 如何检测命令输出是否正在unix管道中使用

C 命令行应用程序 : how to programatically move cursor

C 头文件不起作用?

c - 获取用户输入并将其分割成一个结构,以便传回给 execvp

linux - 即使循环指向输出文件,echo 命令也会显示在屏幕上

linux - yjw 替换然后用 sed 查找

c++ - 创建文件C++(Unix和Windows的跨平台解决方案)

unix - 应用程序崩溃和 Seg 错误