① linux read读取问题
注意:以下实例省略了错误处理。
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
typedef struct
{
char name[20];
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("%s\n", li4.name);
printf("%d\n", li4.age);
// close
close(fd);
return 0;
}
② linux 下编写的一个带超时限制的read()
输入输出都有缓冲区概念,在输入hello world不回车,其实已经放到了read缓冲区中,在超时关闭read()的时候,系统会flush缓冲区,其实就是把它放到内存中,所以这时候n已经有值了,write当然会输出hello world了。
③ linux中read 如何从文件读取数据
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr---读入的buf
size--读入的大小
nmenb--读入的数据块,取1
stream--文件指针
④ linux 中$,read分别是什么意思
楼上的都有理,$这个代表的是普通用户的意思,我觉得你应该问的是shell里面的意思,shell里面就是提取变量。read 读取键盘的输入作为程序往下执行的开始。
⑤ linux下系统调用函数read()
open系统调用
open函数的三个参数:
(1)path是已经存在的文件的路径;
(2)oflags参数:若值为 O_RDONLY ,就以只读方式打开文件;
若值为 O_WDONLY,就以只写方式打开文件;
若值为 O_RDWR,就以读写方式打开文件;
(3)参数mode:文件的权限,对于一个已经存在的文件,参数mode是没有用的,通常将其省略,因此这种情况下open调用只需两个参数。
创建新文件:
前面已经说到,当文件不存在时,open会创建一个新文件(仅能是普通文件),我们只需要用 or操作向open的 oflags参数中加入标志O_CREAT即可。这样可以创建一个新的只读文件,但是这没有任何意义,因为所创建的新文件没有任何可读内容。因此一般需要 O_CREAT与 O_WRONLY或 O_RDWR一起使用,此时就需要mode参数了。
例如:
int fd = open("/home/LY/newfile",O_RDWR | O_CREAT,MODE_FILE)
参数mode仅在创建新文件时有效,对于一个已经存在的文件,它没有任何作用。
关于open的flags参数:
除了以上介绍的 open标志外,open还有许多标志,具体的如下表所示:
标志
解释
O_RDONLY
只读方式打开
O_WRONLY
只写方式打开
O_RDWR
读写方式打开
O_APPEND
每次写都追加到文件的尾端
O_CREAT
若文件不存在则创建文件
O_DSYNC
设置同步I/O方式
O_EXCL
如果文件已存在,则出错;必须与O_CREAT一起使用
O_NOCTTY
不将此设备作为控制终端
O_NONBLOCK
不等待命名管道或特殊文件准备好
O_RSYNC
设置同步I/O方式
O_SYNC
设置同步I/O方式
O_TRUNC
将其长度截短为0
write系统调用
write函数的三个参数:
(1)fildes: 文件描述符
(2)buf:指定写入数据的数据缓冲区
(3)nbytes:指定写入的字节数
函数返回值:
成功:已写的字节数
-1 :出错
0:未写入任何数据
例子:
运行结果:
read系统调用
read函数的三个参数:
(1)fildes:文件描述符
(2)buf:指定读入数据的数据缓冲区
(3)nbytes:指定读入的字节数
函数返回值:
成功:已读的字节数
0:未读入任何数据
-1:出错
例子:
运行结果:
close系统调用
通过对 close进行分析,我们会发现close并没有做什么实质工作,它没有刷新任何内核缓冲区,而仅仅是使文件描述符可以重用。
⑥ linux 中read命令后面-p是什么意思呢
p是prompt的缩写,即由这个开关项给出提示信息,例如
read -p 'please input you choice:\n' choice
回车后屏幕会显示:
please input you choice:
那么之后你输入的东西就会被保存到choice变量中了
另外,read是bash的内建命令,这些选项的作用都可以通过man命令获得的
⑦ 如何使用linux read命令
read是读取你在屏幕上内容的。。。。如果你不输入,肯定是null
⑧ linux read(0,buf,100)其中的fd=0是什么意思
shell下输入“man 2 read ” 你先看看。
ssize_t read(int fd, void *buf, size_t count);
意义:从文件描述符fd所指向的文件中读取count个字节的数据到buf所指向的缓存中。
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。
文件描述符0代表标准文件。
fd是这么来的。
fd=(open或creat成功调用时的返回值)。
我上学是书上就写这么多了。
⑨ LInux中read和pread问题
pread,read返回的都是成功读取到字节数么,而linux 32位机float类型的大小就是4个字节(至少我用的是~),可别误认为float类型大小是8字节了。返回的r,b是4说明读取成功了啊