2012-12-05 78 views
1

我正在使用ubuntu linux,我只是一個初學者是c語言我創建了一個程序,當在一個文件夾中啓動時創建一個鎖文件,但文件和文件夾都與[DOT]一樣.folder和.file和linux隱藏這樣的文件和文件夾,我有另一個程序,檢查文件是否存在,如果它存在,那麼程序正在運行,如果它不是那麼簡單這裏是我的代碼用c語言打開隱藏文件

FILE* lockfile = fopen("/.folder/.lock", "r"); 
if (!lockfile) { 
    printf("Cannot find lock file"); 
} else { 
    printf("lock file found"); 
} 

該文件夾在根目錄中,我只是想讀取文件,所以我給了「r」作爲訪問我做了很多搜索,但只發現了基於Windows的程序的答案任何人都可以指出我在哪裏錯了或任何解決方案?我如何通過c讀取linux中的隱藏文件和文件夾?

編輯:添加的圖像,使事情多一點明確

folder http://i47.tinypic.com/2z9cvpl.png

.folder目錄它擁有所有當前用戶

file http://i47.tinypic.com/23j6747.png 許可的.lock文件還具有讀取權限對於當前用戶,所以我不認爲這是有問題的權限,或者我仍然是錯的?

+2

'fopen'打開以點開頭的文件名沒有問題。 – cnicutar

+0

請運行'ls -al/.folder/.lock'。我想象的權限不是你的想法。 – djechlin

+0

@cnicutar - 我不知道,但它總是說找不到鎖文件只是這件事是我真的不明白它有什麼問題 @djechlin - 如果我在像'ls -al /這樣的終端中運行該命令。文件夾「,然後它顯示.lock文件,但我從來不知道你可以在'fopen'運行命令也 –

回答

3

在* nix中沒有這種「隱藏」文件。前導點是一種慣例,後面跟着禁止它們顯示的工具,但它們和系統中任何其他類型相同的文件系統對象沒有區別。

+0

爲什麼不能讀取文件是因爲文件和文件夾位於根目錄? –

+0

這是因爲您沒有足夠的權限來讀取它 –

+0

您的意思是作爲用戶right –

4
i just wanna read the file so i gave "r" as the access 

問題出在這裏。如果您只有只讀讀取(r)訪問文件夾,您只能列出(ls)它的內容,而不能讀取或寫入該文件夾內的任何文件。這是fopen失敗的原因。

如果您想讀取其中的文件,您還應該對該目錄執行(x)權限。因此該目錄將同時讀取&執行權限(rx)。

+0

我重讀了你的答案,並且看到了我第一次誤讀的東西。執行權限*本身*不足以讀取目錄中的文件。如果你把最後一句改爲「你應該給讀*和*執行('rx')許可」,那麼我認爲這將解決混亂。 –

+0

@KingsIndian - 我試過了,但仍然不起作用,當我從位置看文件時看不到它,但是如果我使用'ls -la/.folder',那麼它會顯示所有文件,包括'.lock '文件 –

+0

@KingsIndian - fopen中的訪問權限還沒有改變用戶權限嗎?我的意思是我沒有登錄作爲根源是這個問題? –