前期准备:  

  下载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 递归删除文件

UNIX环境高级编程--1的更多相关文章

  1. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  2. multiple definition of `err_sys' 《UNIX环境高级编程》

    本文地址:http://www.cnblogs.com/yhLinux/p/4079930.html 问题描述: [点击此处直接看解决方案] 在练习<UNIX环境高级编程>APUE程序清单 ...

  3. unix环境高级编程基础知识之第二篇(3)

    看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...

  4. (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  7. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  10. (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

随机推荐

  1. 51nod1429 巧克力

    [题解] 找一下两个面积s1,s2的2和3的因子数,把他们除掉,如果s1,s2不相等,就是-1,否则可以用s1,s2的2和3的因子数计算答案. #include<cstdio> #incl ...

  2. codeforces 372 Complete the Word(双指针)

    codeforces 372 Complete the Word(双指针) 题链 题意:给出一个字符串,其中'?'代表这个字符是可变的,要求一个连续的26位长的串,其中每个字母都只出现一次 #incl ...

  3. UVA - 10825 Anagram and Multiplication

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34594 有一个m位n进制的数,它的特性是这个数依次乘以2,3... ...

  4. Bellman-ford算法的学习http://blog.csdn.net/niushuai666/article/details/6791765

    http://blog.csdn.net/niushuai666/article/details/6791765

  5. Happy 2006 欧几里得定理

    Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11956   Accepted: 4224 Descr ...

  6. 《Spring in action》之高级装配

    1.Spring 通过配置profile bean.激活profile来设置对应环境. 配置profile bean: 可通过@Profile("dev")注解进行配置.也可以通过 ...

  7. Ubuntu 16.04修复PDF默认使用ImageMagick打开无法设置其它默认的问题(默认打开程序设置)

    打开:~/.config/mimeapps.list 去掉以下几项: image/pdf=display-im6.desktop image/pdf=display-im6.q16.desktop;d ...

  8. Ubuntu 16.04清楚Dash历史记录

    1.[系统设置]->[安全和隐私]->[文件和应用]->[清除使用数据] 2.清楚播放记录 rm -v ~/.local/share/recently-used.xbel 3.清楚打 ...

  9. SiteMesh基础教程

    SiteMesh是由一个基于Web页面布局.装饰以及与现存Web应用整合的框架.它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等. 教 ...

  10. 用Docker创建Nexus

    步骤如下: 1. 创建持久化目录 $ mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data 2. 创建镜像并运 ...