2012-10-31 119 views
1

我使用系統調用open()打開一個文件。系統調用open()權限

if ((fd2 = open(logFile, O_RDWR |O_APPEND | O_CREAT), 0666) == -1) 
    DieWithError("open() failed"); 

我的文件是FTP_track.log創建沒有任何問題。問題是,雖然我有模式0666,這是讀寫所有,我無法在Unix中打開文件。我必須將文件屬性的權限更改爲讀取和寫入。

任何想法?謝謝。

+0

可能是您的umask禁止爲所有人寫入權限。 –

回答

2

您的線路的問題是括號不匹配。你的表情被解析爲fd2 = open(), 0666。在C中,表達式expr1, expr2的值爲expr2因此,您的if聲明基本上表示fd2 = 0666

+1

同意括號錯誤;不同意分析;賦值優先級高於逗號,所以它是'fd2 = open(...)',然後0666是與-1比較的值。 –

+0

謝謝!你是對的......它很奇怪,文件創建正確,我沒有錯誤,再次感謝。 – Kelis