unix环境高级编程笔记
准备工作
1. 安装 unix或Linux 这里安装的是linux(虚拟机安装)
虚拟机连接有三种方式:host only,桥接, nat,其中
a. Hostonly:
vmnet1 ip :172.16.245.1
vmware虚拟机网络设置:ip:172.16.245.100 gateway:172.16.245.1
b. ridge:主机ip:10.70.54.31 设置虚拟机ip:10.70.54.22 ,netmash,broadcast,gateway,dns都与主机相同即可,实现虚拟机主机,互联网通信。
c. 和hostoly一样。
2. 在LINUX下安装apue
在http://www.apuebook.com/下载src.tar.gz源代码的压缩包,
解压在/usr/目录中,
修改目录中的linux.mk,WKDIR = 设置为你安装的目录
修改安装目录下的std/linux.mk 将所有的nawk 改为awk 可以使用这个命令:
%s/nawk/awk/g
返回安装目录运行make
将安装目录下的apue.h 和安装目录下的lib/error.c复制到/usr/include目录下。
3. 每次有err_开头的函数都要包含apuerror.h并放入/usr/include文件下,内容为:
准备工作
1. 安装 unix或Linux 这里安装的是linux(虚拟机安装)
虚拟机连接有三种方式:host only,桥接, nat,其中
a. Hostonly:
vmnet1 ip :172.16.245.1
vmware虚拟机网络设置:ip:172.16.245.100 gateway:172.16.245.1
b. bridge:主机ip:10.70.54.31 设置虚拟机ip:10.70.54.22 ,netmash,broadcast,gateway,dns都与主机相同即可,实现虚拟机 主机 ,互联网通信。
c. 和hostoly一样配置,只不过选项不一样
这三种方式的连接的意义不一样,bridge相当于一个物理机器,虚拟网卡相当于在主机和虚拟机前加了个交换机,他们访问时互通的,hostonly方式相当于一个虚拟的网络依附于主机,主机和这个虚拟网络可以互通,但是虚拟网络和主机的别的网络部能互通,NAT则是虚拟网络可以访问别的网络,但是别的网络部能访问虚拟网络。
2. 在LINUX下安装apue
在http://www.apuebook.com/下载src.tar.gz源代码的压缩包,
解压在/usr/目录中,
修改目录中的linux.mk,WKDIR = 设置为你安装的目录
修改安装目录下的std/linux.mk 将所有的nawk 改为awk 可以使用这个命令:
%s/nawk/awk/g
返回安装目录 运行make
将 安装目录下的apue.h 和安装目录下的lib/error.c复制到/usr/include目录下。
3. 每次有err_开头的函数都要包含apuerror.h并放入/usr/include文件下,内容为:
#include
#include
static void err_doit(int, int, const char *, va_list);
/*
* Nonfatal error related to a system call.
* Print a message and return.
*/
void
err_ret(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
err_doit(1, errno, fmt, ap);
va_end(ap);
}
/*
* Fatal error related to a system call.
* Print a message and terminate.
*/
void
err_sys(const char *fmt, ...)
{
。。。
。。。
第一个例子
下面是运行程序,这样本书的运行例子的环境就搭建完成了。
UNIX基础知识
Unix体系结构
控制计算机硬件资源,提供程序运行的环境,一般而言,我们称此种软件为内核,它相对较小,位于环境中心,
为系统调用,公共函数构建在系统调用接口之上,应用软件即可使用公用函数库,也可以使用系统调用,shell是一种特殊的应用程序,它为运行其他应用程序提供一个接口,
目录文件名
创建目录时会自动创建2哥文件名:.和..。
路径名
绝对路径和相对路径 /xxx/ssss sdfsdf/erwerw
起始目录
登陆时,工作目录设置为起始目录,该起始目录从口令文件中相应用户的登录项中取得。
输入和输出
1. 文件描述符通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。在读写文件时,就可以使用它。
2. 标准输入、输出、和标准出错。可以使用 > 、<来重定向。
3. 不用缓冲的I/O。
函数open、read、write、lseek以及close提供了不用缓冲的I/O。这些函数都使用文件描述符。
步子迈大了,那啥了。。。。。