[英]System call open C can't print file content if the file is not opened as sudo
所以我創建了一個新文件:
fd = open("tester.txt", O_CREAT | O_RDWR);
然后使用系統調用寫我添加一些信息。 但是當我嘗試從文件中讀取信息時,無法進行。 使用我發現的終端 ,打開文件的唯一方法是使用sudo並成功編寫內容 。 但是,我的程序不能是root。 那么,如何打開文件,向其中寫入一些內容並且不關閉C程序輸出文件。
您缺少將文件模式指定為創建打開調用的第三個參數; 嘗試以下方法:
fd = open("tester.txt", O_CREAT | O_RDWR, 0644);
然后,應該使用模式-rw-r--r--
創建文件,這樣您自己的用戶就可以打開它進行讀寫。 否則,它可能會以一些隨機權限結束,即---------
,並且只有root可以打開它進行讀取(至少不進行chmodding)。
無論何時在open()系統調用中使用O_CREAT標志,都應明確提供權限。 open()的手冊頁說
int open(const char *pathname, int flags, mode_t mode);
mode指定在創建新文件時使用的權限。 當在flags中指定O_CREAT時,必須提供此參數; 如果未指定O_CREAT,則忽略模式。
所以修改上面的行為
fd = open("tester.txt", O_CREAT | O_RDWR, 0664 );
我希望它能清除你的疑慮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.