【问题标题】:How can I change the shell directory in the C language program? [duplicate]如何更改 C 语言程序中的 shell 目录? [复制]
【发布时间】:2017-03-14 09:46:06
【问题描述】:

当我使用 chdir() 改变当前目录时,程序关闭时程序不会改变。那么如何在使用 chdir() 并且程序已终止后将 chdir() 应用于 Shell?

【问题讨论】:

标签: c linux shell directory chdir


【解决方案1】:

您不能这样做(从 C 程序内部更改您的父 shell 目录)。当前目录是每个process 的一个属性,并且您的shell 运行在与您的程序不同的进程中(因此shell 进程和您的程序的进程都有各自的当前目录)。

阅读Advanced Linux Programming。它有几个章节与您的问题相关。

也许你可以添加一些 shell 函数(例如到你的~/.bashrc ...),它也许可以使用eval 来运行你的C 程序(它会输出一些cd 命令,你的 shell 的 evalsource 内置函数将在 same shell 进程中处理);顺便说一句ssh-agent 可能是鼓舞人心的。如果你是新手,其实我不推荐这条路线。

附言。你真的应该激发你的问题并提供很多更多背景;它闻起来很像XY problem

【讨论】:

  • execl 以防万一需要执行shell命令
  • @Ashish:我不明白你的意思(以及它与 OP 的问题有什么关系),但这并没有改变每个进程都有自己的当前目录的事实。
猜你喜欢
  • 2017-03-26
  • 2014-03-02
  • 2018-08-31
  • 2014-03-09
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多