![](/img/trans.png)
[英]How to change the current directory to a designated directory using chdir() in c?
[英]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.