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 递归删除文件
UNIX环境高级编程--1的更多相关文章
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- multiple definition of `err_sys' 《UNIX环境高级编程》
本文地址:http://www.cnblogs.com/yhLinux/p/4079930.html 问题描述: [点击此处直接看解决方案] 在练习<UNIX环境高级编程>APUE程序清单 ...
- unix环境高级编程基础知识之第二篇(3)
看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- 数据分布vs聚类-数据预处理技巧-对数变换
对于原始数据分布倾斜 利用统计或数学变换来减轻数据分布倾斜的影响.使原本密集的区间的值尽可能的分散, 原本分散的区间的值尽量的聚合. Log变换通常用来创建单调的数据变换.它的主要作用在于帮助稳定方差 ...
- HTML5中Canvas概述
一.HTML5 Canvas历史 Canvas的概念最初是由苹果公司提出的,用于在Mac OS X WebKit中创建控制板部件(dashboard widget).在Canvas出现之前,开发人员若 ...
- MSSQL获取指定日期的SQL语句
--1.一个月第一天的 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) --2.本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0 ...
- Why does MySQL produce so many temporary MYD files?
http://dba.stackexchange.com/questions/30505/why-does-mysql-produce-so-many-temporary-myd-files Data ...
- spring-quartz定时器简单用法
基本配置: 1.quartz.properties #============================================================== #Configure ...
- Sky数
Problem Description Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=2 ...
- Abstract factory抽象工厂--对象创建型
意图: 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 别名:Kit 补充: 抽象产品A : (产品A1 和产品 A2) 抽象产品B : ( 产品B1 和 产品B2) 一般情况 ...
- Memcached高可用方案收集(集群及分布式)
Memcached的集群方案有很多,不止magent一个,但是单靠集群软件去实现高可用感觉还是会缺少一步,最推荐的方案应该是软件加编码去实现高可用,至少能保证站点的99.5%的可运行行,以下是集群的方 ...
- 为什么使用do{}while(0)?
近期学习Cocos2d-x,看到不少使用do{}while(0)的宏定义,如: #define CC_SAFE_DELETE(p) do { delete (p); (p) = nullptr; } ...
- [C++] 自己主动关闭右下角弹窗
近期腾讯.迅雷等各种client,都越发喜欢在屏幕的右下角弹框了. 有骨气的人当然能够把这些软件卸载了事,可是这些client在某些情况下却又还是实用的.怎么办呢? 作为码农,自己实现一个自己主动关闭 ...