zoukankan      html  css  js  c++  java
  • 读书笔记之:Linux程序设计(第2版)

    linux程序设计(第2版)
    第2章 shell程序设计
    1. 在一个脚本程序里执行另外一个脚本程序要比执行一个函数慢的多;执行结果的回传也更困难;并且可能造成小脚本过多的现象.
       在linux系统中,/bin/sh命令通常只是一个到实际应用中的shell的链接.它在大部分linux系统上是一个指向/bin/bash的链接.

    2. 在一台unix系统上,你永远可以保证有一个基本的shell.事实上,如果没有/bin/bash,大部分unix系统根本就不能够开机引导,更不用说让用户登录上机了.
    3. 在shell脚本程序的内部我们可以执行两大类命令令,即可以在命令提示符处执行的普通命令和我们前面提到的"内建"命令."内建"命令是在shell内部实现的,不能做为外部程序被调用.大部分命令都是POSIX技术规范的组成部分,并且经常会提供有独立的对应程序.命令是内部还是外部的一般没有多大的重要性,只是内部命令执行起来效率更高.
       既然提到了命令再实现的问题,我们需要了解一下UNIX怎样把一个程序用做几个命令或不同的文件.用"ls-l"命令查看一下mv,cp和ln命令,我们会发现,他们在许多系统上的实现都是同一个文件,只不过用ln命令创建录几个不同的名字而已.当这个命令被调用的时候,他会先检查自己的第一个参数---在UNIX下这将是该命令本身的名字,然后再决定将要采取什么样的动作.

    4. : 冒号命令
      这是一个空命令,它偶尔会被用来简化逻辑条件,相当于true的一个假名.因为它是内建的,所以它比true运行的更快,但它的可读性要差了不少.
      : 还可被用来对变量进行条件化设置的情况下,比如
      : ${var:=value}
      如果没有":",shell会尝试把$var解释成一个命令
    5. exec命令
      exec有两种不同的用法(1)它经常被用来以另一个不同的程序替换掉当前的shell
          (2)第二个用法是修改当前文件的描述符:exec 3 < afile

    第3章 如何使用和处理文件
    1. 比较重要的设备文件有3个:
      (1)/dev/console设备
      代表控制台
      (2)/dev/tty
      特殊文件/dev/tty是进程控制终端(键盘和显示屏,或者键盘和窗口)的一个假名(逻辑设备)
      需要提醒大家的是,/dev/console设备只有一个,但是通过/dev/tty能够访问的物理设备却可以很多
      (3)/dev/null
      空(null)设备
    2. 文件流与文件描述符的关系
      每个文件流都和一个底层文件描述符相关联着.我们可以把底层的输入输出操作和高层的文件流操作混在一起,但一般来说这并不是明智的方法,因为它会使数据缓冲的后果难以预料.
      #include <stdio.h>
      int fileno(FILE*stream);
      FILE*fdopen(int fileno,const char*mode);
    3. 文件与子目录的维护
      int chmod(const char *path,mode_t mode);
      int chown(const char *path,uid_t owner,gid_t group);

      int mkdir(const char *path,mode_t mode);
      int rmdir(const char *path);

      int chdir(const char *path);//cd 命令
      int *getcwd(char *buf,size_t size);

    (待续)
  • 相关阅读:
    Linux数据库还原备份
    loadrunner遇到的问题
    Maven基础入门与核心知识
    数据去中心化的场景与流程
    设计模式:灵活编程(观察者模式)
    使用Mycat构建MySQL读写分离、主从复制、主从高可用
    设计模式:灵活编程(装饰模式)
    设计模式:灵活编程(组合模式)
    Laravel5:重定向 redirect 函数的详细使用
    设计模式:对象生成(单例、工厂、抽象工厂)
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2603915.html
Copyright © 2011-2022 走看看