zoukankan      html  css  js  c++  java
  • UNIX环境高级编程--1

    前期准备:  

      下载apue3源文件(从apuebook.com上),然后编译(make)之后,得到libapue.a动态链接文件(.o 就相当于windows里的obj文件 .a 是好多个.o合在一起,用于静态连接 .so 是shared object,用于动态连接的,和dll差不多)。

      把apue.h放到 usr/include中,libapue.a放到usr/local/lib中。

      如果想要在IDE中编译书中的source_code.c那么要记得设置项目或者文件的 “build option”,将 complier linker中添加一个刚才存放libapue.a的路径。

      如果想要在命令行中编译使用如下命令即可:gcc myls.c -o myls -lapue  这样执行生成的可执行文件 ./myls ~ 就可以看到显示的~(home)路径下所有文件了。

    文件和目录:

      myls例子能够让我了解一个简单的linux 命令ls的大体实现思路。

    输入和输出:

      流的概念。通过 ls > file.list可以将ls命令的输出流重定向到file.list中。当然,如果不做任何处理,那么这些命令的输出流当然是指向终端的。不错~

      不带缓冲的I/O:

      myOut.c实现了从标准流读入,并向标准输出写。接下来见证奇迹的时刻:

      ./a.out > data 将标准输入写入到文件"data"中

      ./a.out < infile > outfile 成功将文件infile中内容写入到outfile中去。 从而实现,可以将任意文件复制。(感觉和cat命令有点类似功能。只不过这里经历了到标准流到终端 然后重定向到文件中去)

      标准I/O:带缓冲。无需担心如何选取最佳的缓冲区大小。比如printf函数。接下来实现了书中的例子采用标准IO将标准输入复制到标准输出。同样可以是实现上述复制文件的功能。

    程序和进程:

      程序是一个存储在磁盘上的某个目录中的可执行文件。内核使用exec函数,将程序读入内存,并执行。

      进程(Process)是程序执行的实例。

      神说“exec函数有7种变体,但经常把他们统称为exec函数”

      进程控制 用于进程控制的主要函数:fork exec waitpid

      myCommand.c实现了从终端读入命令,然后通过文件执行输出结果到终端。这里起到脚本的作用,内部通过execlp执行命令。

    出错处理:

      大约15种不同的错误值(非0)。*charerror(int errnum)  perror(const char *msg)

    用户标识:

      用户id, 组id,附属组id

    信号:

      信号用于通知进程发生了某种情况。

    时间值:

      日历时间:世界时,进程时间:时钟嘀嗒

    系统调用和库函数:

      所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务。这些入口点成为系统调用。从应用角度考虑,可以将系统调用视为C函数。通用库函数并不是内盒的入口点。  比如,

    库函数malloc来分配内存实际上是调用了UNIX系统调用中处理存储空间分配的 sbrk(2),如何管理内存取决于进程。如果需要的话,可以根据它来自己定义malloc函数。

    学到的命令:

    touch "file.list" 创建一个名为“file.list”的文件

    cat from_file >> other_file 将from文件中的内容复制到other_file中。

    mv  before_file_name new_file_name 将文件重命名

    rm -rf filename 递归删除文件

  • 相关阅读:
    结对第一次—疫情统计可视化(原型设计)
    软工实践寒假作业(2/2)
    test
    软工实践寒假作业(1/2)
    json的基本用法
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    寒假作业(2/2)— 疫情统计
    软工实践寒假作业(1/2)
  • 原文地址:https://www.cnblogs.com/luntai/p/6106762.html
Copyright © 2011-2022 走看看