繁体   English   中英

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

[英]Using chdir() to change directory from Terminal

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

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

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

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

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

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

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

这是在 C 中更改当前工作目录的方法

这需要包含unistd.h头文件

if( 0 != chdir( "pathToNewDirectory" ) )
{ // then chdir failed
    perror( "chdir failed" );
   // handle error
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM