make与makefile IO read write

来源:互联网 发布:学校会对网络监控吗 编辑:程序博客网 时间:2024/05/12 11:53

      一、make与makefile

              1、回顾:

                      目标的语法

                      目标名:依赖目标

                              @命令

                              @命令

                      make的命令行使用

                               make     -f   make脚本文件     目标名

               2、目标的划分

                          目标依赖

                

                 3、默认规则:

                     a、不指定目标:执行第一个目标

                     b、不指定make文件,默认文件是makefile(优先)或Makefile

                 4、目标的调用规则:(make把目标当做文件)

                        make执行目标:

                               搜索与目标相同的文件

                               如果文件存在,则判定日期。

                                     日期最新,则停止执行,输出提示。

                                     日期不是最新,则进行执行

                        比较:当前目标与依赖目标

                  5、建议:

                           每个编译的结果作为一个目标// 只要有文件输出,就把任务作为一个目标

                           并且把编译结果作为目标名     //并且把输出的文件作为目标名

                        

                    6、潜规则

                            .c       .o          查找.o目标,目标不存在,就把.o替换成.c 如果.c存在,实施潜规则:直接调用gcc把.c执行成.o

                    7、变量

                             变量名 = 值  值        $(变量名)             $ {变量}          echo $(PATH)

                     

                    8、伪目标 :不把目标作为文件处理的目标称为伪目标

                           声明伪目标         .PHONY:  

                    make的配置、make的变量的操作函数、多make文件使用                    

      二、环境变量

               1、直接使用main的参数

                

                命令行参数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、得到文件描述符号/关闭释放文件描述符号

                       a.文件类型

                               目录文件d

                               普通文件f

                               字符设备文件c

                               块设备文件b

                               符号连接文件(软连接)l

                               管道文件p

                               socket文件s

                       b.文件的属性

                               属性的表达方式:绝对模式、字符模式

                               文件的权限属性:

                                       读          写      执行         粘附位权限            用户设置位权限            组设置位权限

                                   0                           0                             0                                 0                          0

                                                               特殊权限                   owner                    group                      other

                               设置位向其他用户开放拥有者权限的权限    用户设置位

                               设置位向其他用户开放组用户权限的权限    组用户设置位

                               设置位只对执行程序有意义(执行权限)

                               s设置位      2:组设置位      4:用户设置位           s对执行有效,无效的设置位使用S表示

                                t 设置位        1:表示粘附位设置            t  对写文件有意义,无效的粘附位使用T表示  

                                粘附的目的:防止有些权限的用户删除文件。


                                程序在执行的时候到底拥有的是执行者用户还是文件拥有者的权限

                 2、通过文件描述符号读写各种数据


                 3、文件描述符号与重定向

0 0
原创粉丝点击