簡體   English   中英

C:使用open()拒絕權限(Windows的GCC)

[英]C: Permission Denied with open() (GCC for windows)

所以,我只寫:

int fdes = open(path, O_WRONLY | O_CREAT | O_TRUNC);

如果path引用的文件不存在,則此代碼有效。 但如果確實如此,則代碼返回errno 13:Permission Denied。 我從不使用O_EXCL模式。

我很長一段時間都在尋找解決這個問題的方法,我真的很困惑。 你能解釋一下這個問題嗎?

我使用GCC for windows(4.5.2) 您的回答將不勝感激。

  1. 如果使用O_CREAT ,則應該提供一個模式作為open()的第三個參數。
  2. 如果文件存在,則必須具有該文件的寫入權限。 該錯誤表明(強烈建議)在沒有寫入權限的情況下創建文件。 這可能是因為沒有以合理模式創建它。

請注意(至少在Unix上)您可以使用模式0444 (甚至0 )創建用於寫入的文件; 權限影響其他所有人,但不影響在使用創建文件的文件描述符時創建文件的進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM