程序:
#include<stdio.h>
#include<unistd.h>
int main()
{
char s[100];
printf("%s\n",getcwd(s,100));
chdir("..");
printf("%s\n",getcwd(s,100));
return 0;
}
输出:
$ ./a.out
/home/guest
/home
$
上述程序会更改进程的工作目录。但是,它并没有改变当前shell的工作目录。因为当程序在shell中执行时,shell在exec机制上跟随fork。因此,它不会影响当前的shell。
有吗? 通过这些程序更改shell的当前工作目录的任何方式,如shell使用的内置(cd,echo)命令?
答案 0 :(得分:1)
有没有办法通过这些程序来改变shell的当前工作目录,比如shell使用的buildin(cd,echo)命令。
你做不到。
允许子进程更改父进程的当前目录或任何状态会对父进程造成严重破坏。