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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝退货店家收到货不退款怎么办 卖家拒绝申请我退货了怎么办 衣服洗了卖家拒绝退货怎么办 在京东买的小米手机屏摔碎了怎么办 取消流量漫游后省内不限量怎么办 在淘宝买东西不发货也不退款怎么办 微信上充值电话号码空号怎么办 支付宝转帐到已停机的号码上怎么办 支付宝充话费充错号码怎么办 支付宝话费充错号码了怎么办 村书记打了人不给赔偿药费怎么办 淘宝退给的支付的钱怎么办 淘宝支付了钱没回信息怎么办 微信话费充值暂时缺货怎么办 天猫过敏无忧不给退款怎么办 顺丰快递指定丰巢柜发现柜满怎么办 阿里购物申请退款过期末退怎么办 韵达签收了发现里面东西丢了怎么办 没有收到快递但是显示签收了怎么办 支付宝充话费显示商家未发货怎么办 快递被买家签收后调包了怎么办 快递买家签收了东西坏了怎么办 快递没签收到买家评价了怎么办 快递买家签收后现在要退货怎么办 支付宝充话费充错对方关机怎么办 闲鱼同意退款了买家不退东西怎么办 被骗了说给存q币怎么办 方正说我的淘宝字体侵权怎么办 买家说收到衣服没有吊牌该怎么办 淘宝下完订单店主不发货怎么办 工商局不给查被告企业的信息怎么办 被职业打假人起诉到法院怎么办 京东购物如果换货不给你发货怎么办 淘宝上发的快递没有了怎么办 天猫购物半个月不发货怎么办 京东网同一产品购买多规格的怎么办 天猫商城购买的家具要退换货怎么办 亚马逊美国站会员日前没销量怎么办 淘宝买的鞋子把脚磨坏了怎么办 拼多多下单 没货 没法发货怎么办 闲鱼退货物流弄坏了卖家拒收怎么办