69,369
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
char file[] = "/root/b.c";
int flags = O_RDONLY;
flags |= O_DIRECT;
flags |= O_SYNC;
int fd = open(file, flags);
char buff[4096];
printf("%d\n", read(fd, buff, 2));
while(read(fd, buff, 2) > 0)
{
printf("aaaa\n");
printf("%s", buff);
}
close(fd);
}
#include<stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
char file[] = "/root/b.c";
int flags = O_RDONLY, ret;
flags |= O_DIRECT;
flags |= O_SYNC;
int fd = open(file, flags);
if (fd < 0)
return 1;
char buff[4096];
ret = read(fd, buff, 2);
if (ret < 0)
printf("%s\n", strerror(errno));
else if (ret > 0)
puts(buff);
//printf("%d\n", read(fd, buff, 2));
while(read(fd, buff, 2) > 0)
{
printf("aaaa\n");
printf("%s", buff);
}
close(fd);
return 0;
}
用strerror(errno)定位是什么原因导致的return -1