[英]linux read() function from unistd.h doesn't work for me :(
我尝试了我能想到的一切,但由于某种原因,它不会将文件中的数据存储到“数据”中,但文件中有写入的数据。
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
char data[69]=" ";
int fd = open("./MyFile.txt", O_RDWR | O_CREAT | O_SYNC | O_RSYNC);
write(fd, "HELLO", 5);
read(fd, data, 5);
cout << data << endl;
return 0;
}
你们能帮帮我吗? 我正在尝试学习文件 I/O,但我不知道是 O_RDWR 还是这里有什么问题。
文件描述符 position 在write(2)
之后位于末尾。 要从头开始read(2)
,您需要将 fd 倒回到开头。
您可以使用lseek
:
write(fd, "HELLO", 5);
lseek(fd, 0, SEEK_SET);
read(fd, data, 5);
此外,您应该为所有这些系统调用(open、read、write、lseek)添加错误检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.