Yazdigim programdan dosyalara erisirken “bulunamadi” hatalari aliyorum, veya biri bana CWD problemim oldugunu soyledi. CWD Nedir?
CWD (Current Working Directory, bazen Current Directory veya CD) calismakta olan her programin sahip oldugu bir yoldur. Dosya sistemi uzerindeki bir dizine isaret etmesi beklenir. Orn: /home/aib/cwd1
veya C:\Users\aib\cwd2
CWD’nin onemi, neredeyse butun dosya islemlerindeki dosya isimlerinin ona goreceli olarak alinmasidir.
Mesela sistemin open
veya CreateFile
cagrilarina, veya programlama dilimizin standart kutuphanesindeki bir dosya fonksiyonuna hede.txt
isimli dosyayi acmasini soyledik. Sistem, bu dosyayi CWD altinda arayacaktir: /home/aib/cwd1/hede.txt
veya C:\Users\aib\cwd2\hede.txt
.
Dosya yolunda bir dizin oldugu takdirde, bu dizin ve altindaki dosya da CWD icinde aranir:
txt_dosyalari/hede.txt
→ /home/aib/cwd1/txt_dosyalari/hede.txt
“Mevcut dizin” ve “bir ust dizin” anlamina gelen .
ve ..
dizin isimleri de, dosya yolunun basinda olduklari takdirde, CWD’ye goreceli calisirlar.
./hede/hodo
→ /home/aib/cwd1/./hede/hodo
→ /home/aib/cwd1/hede/hodo
../hede/hodo
→ /home/aib/cwd1/../hede/hodo
→ /home/aib/hede/hodo
Kisaca yazdigimiz her dosya yolunun basina “{CWD}/
” eklenebilir gibi dusunebilirsiniz. Bu yollara “goreceli yol” (relative path) denir.
Bu mekanizmayi atlamanin yolu, “mutlak yol” (absolute path) kullanmaktir. Mutlak yollar /
veya X:\
ile baslar. CWD’ye degil, dosya sisteminin kokune/temeline goreceli olarak cozulurler:
/tmp/foo
→ /home/aib/cwd1/tmp/foo
degil → /tmp/foo
C:\hede.txt
→ C:\Users\aib\cwd2\C:\hede.txt
degil → C:\hede.txt
Windows’ta \
ile baslayan yollar da mutlak yollara cok benzeyen bir sekilde davranirlar. CWD’nin surucusunun kokune goreceli alinirlar:
\hede.txt
→ C:\hede.txt
(cunku CWD C: surucusunde)
Calismakta olan bir program, CWD’sini getcwd(3)
veya GetCurrentDirectory
cagrisiyla alip, chdir(2)
veya SetCurrentDirectory
cagrisiyla degistirebilir.
Bourne/sh uyumlu bir kabukta calisiyorsaniz CWD’nizi pwd
komutuyla alip cd
komutuyla degistirebilirsiniz. (Windows’ta ikisi de CD
idi yanlis hatirlamiyorsam.)