• 读书笔记之: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);

    (待续)
  • 相关阅读:
    Docker配置容器位置和小技巧
    firewall防火墙
    iptables防火墙常用命令
    Docker 常用命令
    Dockerfile镜像的制作
    Windows和Centos下Docker的安装配置
    ubuntu 常用命令
    microPython环境安装及使用
    Arduino上“Collect2.exe: error: ld returned 5 exit status”错误的解决方法
    基于C语言的面向对象编程
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2603915.html
Copyright © 2020-2023  润新知