【发布时间】:2016-01-13 09:35:19
【问题描述】:
程序:
#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遵循fork on exec机制。所以,它不会影响当前的 shell。
有吗 有什么方法可以通过这些程序更改 shell 的当前工作目录,比如 shell 使用的内置 (cd, echo) 命令?
【问题讨论】:
-
有一个原因
cd是内置的;它不能通过单独的进程来实现。