【问题标题】:What do you think happens when a child process executes a chdir - does this effect the parent?您认为当子进程执行 chdir 时会发生什么 - 这会影响父进程吗?
【发布时间】:2018-05-01 17:53:40
【问题描述】:
int chdir(const char *path); 

-chdir 将当前目录更改为路径中指定的目录。 如果我对孩子使用这个命令/这会影响父母吗?

请解释原因(是/否)?

【问题讨论】:

  • 当你尝试时会发生什么?
  • 欢迎来到Stack Overflow。虽然欢迎家庭作业问题作为尝试解决方案的指导(例如,您给出了什么解释?)。问这个问题而不试图回答,感觉就像你在要求别人为你做作业。请尝试回答,看看你得到什么作为回应。同时欢迎来到Stack Overflow,当你有机会阅读How to Ask
  • 先生,这不是我的作业。
  • 当我这样做时,子进程目录已更改。实际上我希望父进程也会改变。但这并没有发生@Flimzy
  • @UgurTufekci:那你已经知道你的问题的答案了。

标签: c process fork


【解决方案1】:

子进程和父进程是独立的进程。大多数情况下,子级的资源是在创建子级时从父级资源中复制而来的,因此它们是单独的资源,而不是共享资源。

启动时,系统会创建一个初始进程。该进程会创建额外的系统进程,以管理用户界面、提供网络服务等等。当您登录(可能是自动的)时,其中一个进程会创建一个进程来管理您的登录会话,包括桌面。当您打开应用程序时,该登录/会话进程(或它创建的其他东西)会创建一个应用程序进程。

如果当子进程更改其当前目录时,父目录也发生了更改,那么父目录的父目录也会更改,其父目录也会更改,然后所有备份该行的系统进程将使用不同的目录。这是不合适的;他们不应该使用特定用户的目录。每个进程都有自己的目的来拥有一个特定的当前工作目录。

【讨论】:

    【解决方案2】:

    在 linux 中,如果你调用 fork() 会发生子进程只是成为父地址空间的副本。新地址空间建立后,它们只是单独的进程。因此,当您在一个进程中调用 chdir 时,它不会影响另一个进程。希望这在某种程度上有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2020-08-20
      • 2016-11-02
      • 1970-01-01
      相关资源
      最近更新 更多