您的位置:首页 > 房产 > 建筑 > 天津建设网安全员成绩查询_设计外网_最有效的推广方法_百度竞价点击价格

天津建设网安全员成绩查询_设计外网_最有效的推广方法_百度竞价点击价格

2025/1/10 1:05:45 来源:https://blog.csdn.net/m0_53349772/article/details/144996256  浏览:    关键词:天津建设网安全员成绩查询_设计外网_最有效的推广方法_百度竞价点击价格
天津建设网安全员成绩查询_设计外网_最有效的推广方法_百度竞价点击价格

目录

1.读文件

2.写文件

例题:用读写文件实现文件的拷贝

3.错误处理

3.1strerror 函数

3.2perror 函数

4.预读入缓输出

4.1strace 命令

5.文件描述符


1.读文件

#include <unistd.h>
// 按 “字节” 读取数据
ssize_t read(int fd, void *buf, size_t count);

参数:
    fd: 打开的文件描述符 ———— open() 返回值
    buf: 存储读到的数据的 缓冲区
    count: 缓冲区大小   size_t:无符号整数  ssize_t: 有符号整数

返回值:
    成功:
        没读到文件末尾: > 0
        读到文件末尾: 0
    失败:
        -1:

            errno == EAGAIN(或 EWOULDBLOCK):以非阻塞读(设备、网络)文件,没读到数据。
            errno != EAGAIN(或 EWOULDBLOCK):错误!

2.写文件

#include <unistd.h>
// 按 “字节” 写出数据
ssize_t write(int fd, const void *buf, size_t count);

参数:
    fd: 打开的文件描述符 ———— open()返回值
    buf: 存储待写数据的缓冲区地址
    count: 数据大小   size_t:无符号整数    ssize_t:有符号整数
返回值:
    成功:
        > 0: 实际写出的字节数
        = 0: 没写出数据
    失败:
        -1, errno

例题:用读写文件实现文件的拷贝

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>int main(int argc, char *argv[])
{// 创建用于存储读到的数据的缓冲区char buf[1024] = {0};int n = 0;// 打开源文件int fd1 = open(argv[1], O_RDONLY);if (fd1 == -1) {perror("open src err");exit(1);  // 程序非正常结束.}// 打开目标文件int fd2 = open(argv[2], O_RDWR|O_CREAT|O_TRUNC, 0644);    if (fd2 == -1) {perror("open dst err");exit(1);  // 程序非正常结束.}// 循环从原文件中读数据,写到目标文件中.while ((n = read(fd1, buf, 1024))) {if (n < 0) {perror("read error");break;            }// 读多少写多少,生成目标文件write(fd2, buf, n);}// 操作结束,关闭文件close(fd1);close(fd2);return 0;
}

3.错误处理

3.1strerror 函数

    #include <string.h>
    char *strerror(int errnum);

    参:错误号 -- errnum -- 当前程序的唯一全局变量。
    返回值:错误号对应的错误描述

   

错误信息:

3.2perror 函数

    #include <stdio.h>
    void perror(const char *s);

参:用户自定义的错误信息。 perror函数,会自动与 errno对应的错误描述,拼接。

 

4.预读入缓输出

- 操作系统,提高硬件访问的效率,在数据读写时,采用 预读入、缓输出。
- 程序在运行过程中,调用系统调用从用户空间进入内核空间。这个过程十分耗时。

- read、write 函数是无缓冲(无用户缓冲区) IO函数

4.1strace 命令

- 可以跟踪程序,在运行中,使用的系统调用

5.文件描述符

- pcb进程控制块:
    - 本质:struct 结构体。
    - 成员:文件描述符表。
    - 文件描述符:0/1/2/3/4/5/6....1023
        - 默认最大上限为: 1024, ulimit -a  可以查看。
    - 文件描述符表使用规则:使用表中未被占用的 最小的文件描述符。
- 3个特殊文件:进程启动时,由系统自动打开,进程结束时,系统自动关闭!!!
    - stdin :标准输入:0 - STDIN_FILENO
    - stdout : 标准输出:1 - STDOUT_FILENO
    - stderr : 标准错误:  2 - STDERR_FILENO

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com