使用 chdir() 从终端更改目录
Using chdir() to change directory from Terminal
我正在使用 chdir()
将目录更改为作为参数传递给此函数的值。
我知道当我 运行 我的 C 程序使用 gcc myCd.c
和 ./a.out ..
这会将目录更改为父目录 "within" C 程序(即子程序进程是为 a.out 进程生成的,并且目录的更改发生在该子进程中)。
我想做的是,使用这个 C 程序在终端更改目录。我尝试为此编写一个 shell 脚本,然后采购它,并且 运行ning 有效,但我想使用 C 来实现此目的。
您正在尝试做的事情无法完成。 当前工作目录 是每个进程的属性。
如果您 运行 更改其 cwd 的程序,它不会影响任何其他进程,但它可能在 [=10= 之后创建的任何子进程除外].
更改终端工作目录的正确方法是使用 cd
命令,shell 代表您执行该命令并保留在同一进程中。也就是说,cd
是 shell 没有 fork()
的几个命令之一;这使得 cd
命令按预期工作。
source
ing 一个 shell 文件使其在 shell 的进程中成为 运行。但是,如果您要 运行 没有 source
的脚本,您会发现存在与 C 程序完全相同的问题:shell 为脚本创建一个进程到 运行,它 运行s 然后退出,然后 shell 继续,但它的 cwd 没有改变。
这是在C
中改变当前工作目录的方法
这需要包含 unistd.h
头文件
if( 0 != chdir( "pathToNewDirectory" ) )
{ // then chdir failed
perror( "chdir failed" );
// handle error
}
我正在使用 chdir()
将目录更改为作为参数传递给此函数的值。
我知道当我 运行 我的 C 程序使用 gcc myCd.c
和 ./a.out ..
这会将目录更改为父目录 "within" C 程序(即子程序进程是为 a.out 进程生成的,并且目录的更改发生在该子进程中)。
我想做的是,使用这个 C 程序在终端更改目录。我尝试为此编写一个 shell 脚本,然后采购它,并且 运行ning 有效,但我想使用 C 来实现此目的。
您正在尝试做的事情无法完成。 当前工作目录 是每个进程的属性。
如果您 运行 更改其 cwd 的程序,它不会影响任何其他进程,但它可能在 [=10= 之后创建的任何子进程除外].
更改终端工作目录的正确方法是使用 cd
命令,shell 代表您执行该命令并保留在同一进程中。也就是说,cd
是 shell 没有 fork()
的几个命令之一;这使得 cd
命令按预期工作。
source
ing 一个 shell 文件使其在 shell 的进程中成为 运行。但是,如果您要 运行 没有 source
的脚本,您会发现存在与 C 程序完全相同的问题:shell 为脚本创建一个进程到 运行,它 运行s 然后退出,然后 shell 继续,但它的 cwd 没有改变。
这是在C
中改变当前工作目录的方法这需要包含 unistd.h
头文件
if( 0 != chdir( "pathToNewDirectory" ) )
{ // then chdir failed
perror( "chdir failed" );
// handle error
}