How can I use chdir function in Linux?

大兔子大兔子 提交于 2019-12-02 18:36:27

问题


I have a question, here is my original code in the testchdir.c file:

#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);
    }
}

In my Linux system, my original path is /home/Tom3543, then when I compile my codes above using gcc -o testchdir testchdir.c, it looks good. Later on, I want to change my path and execute the program, so I type

./testchdir /home/tom3543/C++

"success in chdir" appeared in my terminal, but my path is still /home/Tom3543 in my terminal. Can someone help me explain why? I am confused about that!


回答1:


It's because the shell starts a new process for your program, and you only change the current directory in that new process. The shells process will be unaffected.

Unfortunately (for you) there's no real good (or legal) way to change the working directory of the parent process (the process of the shell).



来源:https://stackoverflow.com/questions/32503991/how-can-i-use-chdir-function-in-linux

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!