gpt4 book ai didi

c - 使用 chdir() 从终端更改目录

转载 作者:行者123 更新时间:2023-11-30 17:07:59 25 4
gpt4 key购买 nike

我正在使用chdir()将目录更改为作为参数传递给该函数的值。

据我了解,当我使用 gcc myCd.c./a.out .. 运行 C 程序时,这会将目录更改为“内部”的父目录C 程序(即为 a.out 进程生成一个子进程,并且目录的更改发生在该子进程内)。

我想要做的是,使用这个 C 程序更改终​​端上的目录。我尝试为此编写一个 shell 脚本,然后获取它并运行,这可行,但我想使用 C 来实现这一点。

最佳答案

您尝试做的事情无法完成。 当前工作目录是每个进程的属性。

如果您运行的程序更改了其cwd,它不会影响任何其他进程,除了它可能在 chdir() 之后创建的任何子进程。

更改终端工作目录的正确方法是使用 cd 命令,shell 会代表您执行该命令并保留在同一进程中。也就是说,cd 是 shell 不fork() 的几个命令之一;这使得 cd 命令按预期工作。

sourceshell 文件使其在 shell 进程中运行。但是,如果您要在没有 source 的情况下运行脚本,您会发现存在与 C 程序完全相同的问题:shell fork 为要运行的脚本创建一个进程,它会运行然后退出,然后 shell 继续,但其 cwd 不会更改。

关于c - 使用 chdir() 从终端更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33923335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com