linux下如果open判断文件存在时,使用O_EXCL或O_TRUNC会返回失败,rtthread中的DFS的open判断文件存在时,使用使用O_EXCL或O_TRUNC会返回成功,确实有一定的差异!
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
void main()
{
int fd;
//fd = open("./data.txt",O_RDWR|O_CREAT|O_TRUNC);
fd = open("./data.txt",O_RDWR|O_CREAT|O_EXCL);
/**如果文件存在,fd返回-1,否则返回1**/
if(fd == -1){
fd = open("./data.txt",O_RDWR|O_TRUNC);
if(fd == -1){
printf("file is exiting ,trunc mode open file success!\r\n");
write(fd,"hello world!\r\n",sizeof("hello world!\r\n"));
}else{
printf("file is exiting,open file failed!\r\n");
}
}else{
printf("file is not exiting, open file success!\r\n");
write(fd,"hello world!\r\n",sizeof("hello world!\r\n"));
}
}