You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

子进程执行int chdir(const char *path)是否影响父进程?请说明原因

子进程执行chdir()是否会影响父进程?

答案:否

这个问题的核心在于进程的独立性:

  • 父进程创建子进程后,二者是完全独立的执行实体,各自拥有专属的进程控制块(PCB),而当前工作目录就是存储在PCB里的进程私有属性。
  • 子进程初始会继承父进程的当前目录,但这只是一份“副本”,后续子进程对目录的修改只会作用于自己的PCB,不会反向波及父进程。
  • 调用chdir(const char *path)时,该函数仅会修改调用它的进程的当前工作目录,操作范围严格限制在当前进程内部。

给你个直观的代码验证例子:

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main() {
    char cwd[1024];
    // 父进程打印初始目录
    getcwd(cwd, sizeof(cwd));
    printf("父进程初始目录: %s\n", cwd);

    pid_t pid = fork();
    if (pid == 0) {
        // 子进程切换目录
        chdir("/tmp");
        getcwd(cwd, sizeof(cwd));
        printf("子进程切换后的目录: %s\n", cwd);
        _exit(0);
    } else {
        // 父进程等待子进程结束
        wait(NULL);
        // 父进程再次打印目录
        getcwd(cwd, sizeof(cwd));
        printf("父进程最终目录: %s\n", cwd);
    }
    return 0;
}

运行这段代码你会发现,父进程的目录从头到尾都没有变化,完全不受子进程chdir()操作的影响。

内容的提问来源于stack exchange,提问作者Ugur Tufekci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:05:45