linux中read如何从文件读取数据?
可以使用如下代码来实现:
注意:以下实例省略了错误处理。
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
typedef struct
{
char name;
int age;
} Person;
int main(int argc, char **argv)
{
// open
int fd = open(“name.file”, O_RDWR|O_CREAT, 0666);
// write
Person zhang3;
memset((void*)&zhang3, 0x00, sizeof(Person));
strcpy(zhang3.name, “zhang3”);
zhang3.age = 42;
write(fd, (void*)&zhang3, sizeof(Person));
// lseek
lseek(fd, 0, SEEK_SET);
// read
Person li4;
memset((void*)&li4, 0x00, sizeof(Person));
read(fd, (void*)&li4, sizeof(Person));
printf(“%sn”, li4.name);
printf(“%dn”, li4.age);
// close
close(fd);
return 0;
}
linuxC函数write()写入的数据是如何存储的?read()又是如何读取的?
使用二进制存储
write(fd, &student, sizeof(student));
read(fd, &student, sizeof(student));
如果要读取里面第3个student的内容:
lseek(fd, 2 * sizeof(student), SEEK_SET); //即从开始搜索2个student那么长。
这样的前提是student中没有指针,因为每次运行指针的内容是不确定的。
Linux下read函数默认到底是阻塞的还是非阻塞的?
不知题主的read是指socket的read还是文件的read。
默认情况下,socket的read是阻塞的; 对文件进行read,要看内核态的read接口是注册为同步接口还是异步接口(可参见file_operations结构体)
linux中rwx分别代表什么?
linux中rwx分别代表:
r(read)——读:对文件查看该源文件内容,对目录有查看的权限。
w(white)——写:对该源文件进行编辑,可以移动、新建、修改、删除该目录中的内容。
x(eXecute) ——执行/运行:运行该文件和目录。
前三个"rwx"代表该用户,中间三个"rwx"代表该用户所属组,末尾三个“rwx”代表其他用户。