linux(三)
来源:互联网 发布:阿里巴巴商机助理 mac 编辑:程序博客网 时间:2024/06/05 06:37
一、make与makefile 1.回顾: 目标的语法 目标名:依赖目标 @命令 @命令 make的命令行使用 make -f make脚本文件 目标名 2.目标的划分 目标依赖 3.默认规则: a.不指定目标,执行第一个目标 b.不指定make文件,默认文件是makefile Makefile makefile优先 4.目标的调用规则:(make把目标当作文件) make执行目标: 搜索与目标相同的文件 如果文件存在,则判定日期。 日期最新,则停止执行,输出提示 日期不是最新,则进行执行。 比较:当前目标与依赖目标 5.建议: 只要有文件输出,就把任务作为一个目标 ,并且把输出的文件作为目标名。 6.潜规则(不建议) .c目标与.o目标。 查找.o目标,目标不存在,就把.o替换成.c 如果.c存在,实施潜规则:直接调用gcc把.c执为.o 7.变量 变量名=值 值 $(变量名) ${变量} 8.伪目标: 不把目标作为文件处理的目标称为伪目标 声明伪目标 没有: 1.make的配置 2.make的变量的操作函数 3.多make文件使用二、环境变量 1.使用main的参数 int main(int args,char *argv[],char **arge) { } 命令行参数argv与环境行arge都是字符串数组. 约定:最后一个字符串是NULL/0 2.在C的标准库提供:外部变量 extern char **environ; 3.修改获取某个环境变量 getenv/setenv/unsetenv三、IO的基础 1.认识内核对象 不允许访问内核设备和内存, 但可以通过内核系统函数去访问. 对每个内核对象进行编号ID. 如果访问内核对象,只能通过ID. 编程模型: 申请得到一个ID 在内核系统函数中使用ID得到对应内核对象数据 2.怎么访问文件 使用函数,传递一个文件,系统打开文件,加载文件数据, 返回一个ID. 使用函数,传递ID,得到数据. 使用函数传递ID,告诉系统释放文件. ID:文件描述符号.file description (fd) 每个程序执行的时候都有一个目录,存放打开的文件描述符号 3.每个程序默认打开三个文件设备: 0:标准输入 1:标准输出 2:错误输出 4.操作文件描述符号 ssize_t write(int fd, void *buf,//要写入内核对象的数据 size_t size);//写入数据大小 返回: >0 实际写入的数据 -1 写入错误 ssize_t read(int fd, void *buf,//返回数据的空间 size_t size);//空间大小 返回: >0:实际读取的数据 =0:碰到文件结束符号EOF (ctrl+d) -1:读取错误 建议: 0:输入 1:输出 2:错误输出课堂练习: 1.使用write向0 1 2 写数据 2.使用read从0 1 读取数据,并判定输入的情况, 然后根据相应的结果输出提示 三.基于文件的描述符号 1.得到文件描述符号/释放文件描述符号 a.文件类型 目录文件d 普通文件f 字符设备文件c 块设备文件b 软连接文件l 管道文件p socket文件s b.文件的属性 1.属性的表达方式:绝对模式,字符模式 0 0 0 0 拥有者 组 其他用户 0666 2.文件的权限属性: 读 写 执行 粘附位权限 用户设置位权限 组设置位权限 0 0 0 0 0 特殊权限 Owner group 其他用户 s: S t T 2.1. s设置位 2:组设置位 4:用户设置位 s对执行有效 无效的设置位使用S表示 设置位向其他用户开放拥有者权限的权限.用户设置位 设置位向其他用户开放组用户权限的权限.组用户设置位 设置位只对执行程序有意义(执行权限有意义) 2.2. t设置位 1:表示沾附位设置 t对写文件有意义 没有执行权限的沾附位使用T表示. 沾附的目的:防止有些权限的用户删除文件. 程序在执行的时候到底拥有的是执行者用户的权限 还是文件拥有者的权限. 程序执行中有两个用户: 实际用户 有效用户 总结: 沾附位的作用: 防止其他有写权限用户删除文件 设置位的作用: 向其他执行者开发组或者用户的权限.练习: 1.使用cat创建一个文件 2.设置沾附位,并观察属性 3.设置用户设置位, 并观察属性 4.设置组设置位, 并观察属性 5.考虑w权限与沾附位的关系 6.考虑x权限与设置位的关系. 2.通过文件描述符号读写各种数据. open函数与creat函数 int open( const char *filename,//文件名 int flags,//open的方式[创建/打开] mode_t mode//权限(只有创建的时候有效) ) 返回: >=0:内核文件描述符号. =-1:打开/创建失败 open的方式: 必选方式:O_RDONLY O_WRONLY O_RDWR,必须选择一个 创建/打开:O_CREAT 可选方式: 对打开可选方式:O_APPEND O_TRUNC(清空数据) 对创建可选方式:O_EXCL 组合: 创建: O_RDWR|O_CREAT O_RDWR|O_CREAT | O_EXCL 打开: O_RDWR O_RDWR|O_APPEND O_RDWR|O_TRUNC 权限: 建议使用8进制数 关闭 void close(int fd); 案例1: 创建文件案例2: 创建文件并写入数据 20 short float tom 20 99.99 bush 70 65.00 达内 40 100.00 注意: 文件的创建的权限受系统的权限屏蔽的影响 umask //显示屏蔽权限. umask 0666 //设置权限屏蔽. ulimit -a 显示所有的其他限制.案例3: 打开文件读取数据 重点: 怎么打开读取 文件尾的判定 基本类型的数据读写.案例4: 结构体读取 描述:从键盘读取若干条数据,保存到文件 数据追加 3.文件描述符号与重定向 1.判定文件描述符号与终端的邦定关系 int isatty(int fd) 返回非0:fd输出终端 0:fd输出被重定向 2.防止重定向 /dev/tty 总结: 1.make的多目标依赖规则以及伪目标 2.文件的创建与打开(了解设置位的作用) 3.文件的读写(字符串/基本类型/结构体) 4.了解描述符号与重定向
0 0
- linux手记(三)
- Linux常用命令(三)
- Linux(三)
- Linux常用命令(三)
- Linux 命令行 (三)
- linux学习心得(三)
- Linux命令(三)
- Linux日记(三)
- Linux常用命令(三)
- Linux 常用命令(三)
- Linux常用命令(三)
- Linux常用命令(三)
- linux(三)
- linux常用命令(三)
- Linux 手册(三)
- linux基础(三)
- Linux 基础知识(三)
- Linux(三)----find
- git常用命令
- Android:EditText专题
- 线程的创建方式选择哪个更好呢?
- 面试题:6个问题
- hdu1542 Atlantis(扫描线+线段树+离散)矩形相交面积
- linux(三)
- Android帧动画实现
- 阿里巴巴笔试题集锦
- php 读取某目录下的所有文件
- 《项目管理修炼之道》阅读笔记(1)
- ant实现批量打包android应用
- python dir __dict__
- [leetcode] 241.Different Ways to Add Parentheses
- MCS 简单博弈