正如标题所示,我们正在编写一个Unix风格的shell实用程序 U ,该实用程序应该从bash中调用(在大多数情况下)。
U 到底如何更改bash(或一般来说是父级)的工作目录?
PS Shell实用程序 chdir 成功完成了相同的工作,因此必须有一种编程的方法来达到这种效果。
不要这样
FILE *p; char cmd[32]; p = fopen("/tmp/gdb_cmds", "w"); fprintf(p, "call chdir(\"..\")\ndetach\nquit\n"); fclose(p); sprintf(cmd, "gdb -p %d -batch -x /tmp/gdb_cmds", getppid()); system(cmd);
尽管注意Bash的命令已缓存并且不会注意到,但它 可能会 起作用pwd。
pwd