Linux C笔记(1)

操作系统的定义:

操作系统(Operating System,简称OS)是管理和控制计算机 硬件  与 软件  资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源。

1.Linux C 编程(在Linux 下用C语言做开发)
     (1)通过语言借助操作系统,访问硬件
     (2)通过语言借助操作系统,访问系统接口

Linux下一切皆为文件

     系统编程  通过:文件编程,进程与线程编程,网格编程
                    来实现:文件管理,进程管理,设备管理,网络协议栈
     数据库


2.Linux操作系统的构成:
          (1)用户空间     (2)内核空间
     
     用户空间如何访问内核空间?
          (1)系统调用:操作系统给用户的一组“特殊”接口,用户可以通过这些接口来获得操作系统内核
                                     提供的服务(软件中断)
                   这些“特殊”接口成为API:用户编程接口
                   注意:系统调用不是程序员自己发起的,而是API接口发起的
                              系统命令相对API更高了一层,它实际上是一个可执行程序,内部引用了API来实现功能
          (2)硬件中断


为什么用文件管理一切?
               文件有利于数据的展示和存储


     回顾:
          文件的四大类:普通文件(-);目录文件(d);设备文件(c/b);链接文件(l);
               其他:设备文件中,c为字符设备,b为块设备
                         管道文件(p),FIFO;堆栈文件(f),LIFO;共享文件(s);


3.文件描述符:
     作用:用来标识文件,操作一个文件的文件描述符,相当于对文件进行操作
     具体内容:非负的整数,是一个索引值,并指向内核中每个集成的记录表中
     获取方式:系统动态给予,只有操作访问文件时,才给予标识(防止文件IP溢出)




六大基本文件操作API:


1. int creat(const char *pathname , mode_t mode);
     所需头文件: - #include <sys/types.h>
                            #include <sys/stat.h>
                            #include <fcntl.h>


     功能:创建一个名叫pathname的文件,文件的属性为mode


     返回值:出错返回-1,把错误对应的宏放在errno(显示errno 需要#include <errno.h>头文件)中
                  成功则返回文件的描述符


     常用mode的几个宏:(1)S_IRWXU  00700
                                       (2)S_IRUSR   00400
                                       (3)S_IRWXG  00070      S_IRWXO00007


     注意:(1)mode宏之间可以用 | 来实现多种属性,或者直接点0655等数字
               (2)相同名文件创建,会覆盖,但属性不变,当创建的文件与已存在目录的名称一致时,会失败
               (3)void perror(char *);     可以打印错误errno信息,能自动换行,在#include <stdio.h>中
               (4)errno为全局变量,随时都有可能改变
               (5)char *strerror(int errnum);     当给strerror传递errno时,可以打印宏对应的字符串,该函数在string.h中




2. int open(const char *pathname, int flags);
    或者: int open(const char *pathname, int flags, mode_t mode);
     
     所需头文件: #include <sys/types.h>
                         #include <sys/stat.h>
                         #include <fcntl.h>


     功能:打开一个名叫pathname的文件,文件的属性为mode


     返回值:出错返回-1,把错误对应的宏放在errno(显示errno 需要#include <errno.h>头文件)中
                  成功则返回文件的描述符


     常用flags的宏:(1)O_RDWR 读写方式      (2)O_RDONLY 只读     (3)O_WRONLY 只写
                            (4)O_CREAT 当没有该文件时,创建一个改文     (5)O_APPEND     追加打开




3. int close(int fd);


     所需头文件:#include <unistd.h>


     功能:关闭fd文件(fd为文件描述)


     返回值:出错返回-1,成功返回0




4.ssize_t write(int fd, const void *buf, size_t count);


      所需头文件:#include <unistd.h>


     功能:将buf中的字符写入fd文件中,count为需要写入的字节长度(不能将整数直接写入,要转换)


     返回值:出错返回-1,成功则返回实际写入的字节数,当没有写入时,为0




5.ssize_t read(int fd, void *buf, size_t count);


      所需头文件:#include <unistd.h>


     功能:fd文件中的内容读入buf中,count为需要读入的字节长度(读入的一般为字符串)


     返回值:出错返回-1,成功则返回实际读入的字节数,当没有写入时,为0


     注意:当读和写都用同一块缓冲区时,要用memeset对缓冲区清零




6.off_t lseek(int files, off_t offset, int whence);


     所需头文件:#include <unistd.h>
                           #include <sys/types.h>


     功能:修改files文件的读写指针


     返回值:当前位置与开头之间的字节数


     注意:(1)offset为正时,向右移动指针,为负时,向左移动指针
              (2)off_t 为重命名之后的有符号整型
              (3)whence常用宏:SEEK_SET        开头位置
                                                  SEEK_CUR       当前位置
                                                  SEEK_END        结尾位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习 Linux 驱动开发需要掌握以下几个方面的知识: 1. Linux 操作系统的内核架构和基本原理。 2. C 语言编程基础和数据结构。 3. 设备驱动的基本概念和工作原理。 4. Linux 驱动程序的开发方法和调试技巧。 以下是我给出的学习笔记: 1. Linux 操作系统的内核架构和基本原理 - Linux 内核的基本组成部分 - 进程管理 - 内存管理 - 文件系统 - 网络协议栈 - 设备驱动 - Linux 内核的编译和安装 - 下载内核源码 - 配置内核选项 - 编译内核 - 安装内核 - Linux 内核的模块化 - 模块的编写和编译 - 模块的加载和卸载 - 模块的依赖关系 - Linux 内核的调试方法 - printk 函数 - kerneloops 机制 - oops 分析工具 2. C 语言编程基础和数据结构 - C 语言基础 - 变量和常量 - 运算符和表达式 - 控制语句 - 函数和指针 - 数据结构 - 数组和指针 - 链表和树 - 栈和队列 - 散列表和堆 3. 设备驱动的基本概念和工作原理 - 设备驱动的分类 - 字符设备驱动 - 块设备驱动 - 网络设备驱动 - 设备驱动的基本概念 - 设备文件 - 设备节点 - 设备号 - 设备驱动的工作原理 - 设备文件的打开和关闭 - 设备文件的读和写 - 设备文件的控制 4. Linux 驱动程序的开发方法和调试技巧 - 设备驱动的开发方法 - 设备驱动的框架 - 设备驱动的初始化和清理 - 设备驱动的操作函数 - 设备驱动的中断处理函数 - 设备驱动的调试技巧 - printk 函数的使用 - ftrace 工具的使用 - gdb 调试工具的使用 以上是我给出的 Linux 学习笔记,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值