C语言程序中如何更改shell目录?
How can I change the shell directory in the C language program?
当我使用chdir()改变当前目录时,程序关闭时程序不会改变。那么,如何在使用 chdir() 并且程序已终止后将 chdir() 应用于 Shell?
您不能那样做(从 C 程序内部更改您的父 shell 目录)。当前目录是每个 process 的一个属性,而您的 shell 运行 与您的程序处于不同的进程中(因此 shell 进程和您的程序的进程都有各自的属性自己的当前目录)。
阅读Advanced Linux Programming。它有几个章节与您的问题相关。
也许您可以添加一些 shell 函数 (例如,添加到您的 ~/.bashrc
...),这也许可以使用 eval
到 运行 你的 C 程序(它将输出一些 cd
命令,你的 shell 的 eval
或 source
内置函数将在 same 内处理 shell 进程);顺便说一句 ssh-agent 可能会鼓舞人心。其实新手不推荐这条路线
PS。你真的应该激发你的问题并提供很多更多背景;它闻起来很臭 XY problem.
当我使用chdir()改变当前目录时,程序关闭时程序不会改变。那么,如何在使用 chdir() 并且程序已终止后将 chdir() 应用于 Shell?
您不能那样做(从 C 程序内部更改您的父 shell 目录)。当前目录是每个 process 的一个属性,而您的 shell 运行 与您的程序处于不同的进程中(因此 shell 进程和您的程序的进程都有各自的属性自己的当前目录)。
阅读Advanced Linux Programming。它有几个章节与您的问题相关。
也许您可以添加一些 shell 函数 (例如,添加到您的 ~/.bashrc
...),这也许可以使用 eval
到 运行 你的 C 程序(它将输出一些 cd
命令,你的 shell 的 eval
或 source
内置函数将在 same 内处理 shell 进程);顺便说一句 ssh-agent 可能会鼓舞人心。其实新手不推荐这条路线
PS。你真的应该激发你的问题并提供很多更多背景;它闻起来很臭 XY problem.