1、函数名: read 功 能: 从文件中读 用 法: int read(int handle, void *buf, int nbyte); 程序例: #include #include #include #include #include #include int main(void) { void *buf; int handle, bytes; buf = malloc(10); /* Looks for a file in the current directory named TEST.$$$ and attempts to read 10 bytes from it. To use this example you should create the file TEST.$$$ */ if ((handle = open("TEST.$$$", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1) { printf("Error Opening File"); exit(1); } if ((bytes = read(handle, buf, 10)) == -1) { printf("Read Failed."); exit(1); } else { printf("Read: %d bytes read.", bytes); } return 0; } [编辑本段]Linux C read(由已打开的文件读取数据) 相关函数 readdir,write,fcntl,close,lseek,readlink,fread 表头文件 #include
2、若参数count为0,则read()不会有作用并返回0。
(资料图片仅供参考)
3、返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。
4、 附加说明 如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。
5、当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
6、 错误代码 EINTR 此调用被信号所中断。
7、 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。
8、 EBADF 参数fd 非有效的文件描述词,或该文件已关闭。
9、 [编辑本段]read 命令 用途 从标准输入中读取一行。
10、 语法 read [ -p ][-r ][ -s ][ -u[ n ] ] [VariableName?Prompt ] [ VariableName ... ] 描述 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。
11、VariableName 参数指定 shell 变量的名称,shell 变量获取输入行一个字段的值。
12、由VariableName 参数指定的第一个 shell 变量指定给每一个字段的值,由 VariableName 参数指定的第二个 shell 变量指定给第二个字段的值,以此类推,直到最后一个字段。
13、如果标准输入行的字段比相应的由 VariableName 参数指定的 shell 变量的个数多,把全部余下的字段的值赋给指定的最后的 shell 变量。
14、如果比 shell 变量的个数少,则剩余的 shell 变量被设置为空字符串。
15、 注意: 如果省略了 VariableName 参数,变量 REPLY 用作缺省变量名。
16、 由 read 命令设置的 shell 变量影响当前 shell 执行环境。
17、 标志 -p 用 |& (管道,& 的记号名称)读取由 Korn shell 运行的进程的输出作为输入。
18、 注:-p 标志的文件结束符引起该进程的清除,因此产生另外一个进程。
19、 -r 指定读取命令把一个 (反斜杠) 处理为输入行的一部分,而不把它作为一个控制字符。
20、 -s 把输入作为一个命令保存在 Korn shell 的历史记录文件中。
21、 -u [ n ] 读取一位数的文件描述符号码 n 作为输入。
22、文件描述符可以用 ksh exec 内置命令打开。
23、n 的缺省值是 0,表示的是键盘。
24、值 2 表示标准错误。
25、 参数 VariableName?Prompt 指定一个变量的名称和一个要使用的提示符。
26、当 Korn shell 是交互式时,它将把提示符写到标准错误,并执行输入。
27、Prompt 包含多于一个的字,必须用单引号或双引号括起来。
28、 VariableName... 指定一个或多个由空格分隔的变量名。
29、 退出状态 这个命令返回下列出口值: 0 成功完成。
30、 >0 检测到文件结束符或一个错误发生。
31、 示例 1. 下列脚本打印一个文件,这个文件中每行的第一个字段被移动到本行的末尾。
32、 while read -r xx yy do print printf "%s %s/n" $yy $xx done < InputFile 2. 读取一行,把它分成字段,并使用 "Please enter: " 作为提示符,请输入: read word1?"Please enter:" word2 系统显示: Please enter: You enter: hello world 变量 word1 的值应该是 "hello",变量 word2 应该是 "world." 3. 为创建一个共同进程,用 print -p 写到共同进程,并用 read -p 从共同进程中读取输入,请输入: (read; print "hello $REPLY") print -p "world" read-p line 变量 line 的值应该是 "hello world." 4. 为把输入行的副本保存为历史文件中的一个命令,请输入: read -s line < input_file 如果输入文件包含 "echo hello world," ,那么在历史记录文件中将会把 "echo hello world" 保存为一个命令。
本文到此讲解完毕了,希望对大家有帮助。
上一篇:赣锋锂业(002460):8月10日北向资金减持134.83万股
下一篇:最后一页
Copyright 2015-2022 亚洲日报网 版权所有 备案号:京ICP备2021034106号-51 联系邮箱:5 516 538 @qq.com