Pra*_*sht 1 c operating-system
我已经在O_APPEND中打开了一个名为“ pranav”的文本文件| O_CREAT模式如下图所示:
#include<unistd.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
//FILE Descriptor fdes
/*Open file pranav.txt in write-only mode,
O_CREAT creates file if it does not exist*/
int fdes = open("pranav.txt",O_APPEND | O_CREAT );
//Error returns -1
if(fdes!=-1)
{
//To write on file
if((write(fdes,"Pranav",6))== -1)
write(2,"File_Writing_Error",18);
//To print on screen
else
write(1,"Done",4);
}
else
{
//Print "error" on screen
write(2,"File_Opening_Error",18);
}
close(fdes);
}
Run Code Online (Sandbox Code Playgroud)
在O_APPEND模式下,它执行write(2,“ File_Writing_Error”,18); 语句,因此无法在文件上写入“ Pranav”,但是如果我使用O_WRONLY模式,则不会发生此错误并且程序可以成功运行
open文档说,您必须准确给出其中一个标志O_RDONLY,O_WRONLY并且O_RDWR可以使用其他标志(例如O_APPEND和)的任意组合O_CREAT。
您没有提供O_WRONLY除了O_APPEND和O_CREAT。我的猜测是O_RDONLY0,因此当不给出访问标志之一时,您最终将O_RDONLY无法写入文件。
因此正确的代码应为:
mode_t mode = S_IRWXU | SIRWXG; // or any other mode
int fdes = open("pranav.txt", O_APPEND | O_CREAT | O_WRONLY, mode);
Run Code Online (Sandbox Code Playgroud)
请注意mode如果标记包括O_CREAT或,则需要附加参数O_TMPFILE。
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |