unix/linux编程实践教程
coffee-123
这个作者很懒,什么都没留下…
展开
-
第1章 Unix系统编程概述
操作系统用来管理所有资源,并将不同设备和不同的程序连接起来。1.系统资源处理器、输入输出(I/O)、进程管理、内存、设备、计时器、进程间通信、网络2.Unix能做什么(1)登入--运行程序--注销(2)目录操作(3)文件操作3.编写more的实现(1)more的作用按下空格键,输出下一屏内容;按下回车键,现实下一行内容;按下q,结束显示。(2)mor...原创 2019-02-23 10:02:49 · 182 阅读 · 0 评论 -
第11章 连接到近端或远端的进程:服务器与Socket
1.编写bc(pipe、fork、dup、exec)bc/dc程序对是客户/服务器模型程序设计的一个实例,bc/dc对被称之为协同进程。(1)创建两个管道(2)创建一个进程来运行dc(3)在新创建的进程中,重定向标准输入和标准输出到管道,然后运行exec dc(4)在父进程中,读取并分析用户的输入,将命令传给dc,dc读取响应,并把响应传给用户/** tinybc.c *...原创 2019-03-07 23:53:05 · 486 阅读 · 0 评论 -
第13章 基于数据报的编程:编写许可证服务器
1.许可证管理2.流和数据报的比较3.数据报编程(1)接收数据报/************************************************************************ * dgrecv.c - datagram receiver * usage: dgrecv portnum * ...原创 2019-03-10 21:40:57 · 696 阅读 · 0 评论 -
第8章 进程和程序:编写命令解释器
一个可执行程序是一个机器指令及其数据的序列,运行一个程序是将这个机器指令序列载入内存然后让处理器逐条执行这些指令,进程等于运行中的程序。进程存在于用户空间,用户空间是存放运行程序和它们的数据的一部分内存空间。ps命令会列出当前的进程。ps -la,详细列出进程;ps -fa,格式化列出进程;ps -auxlinux上进程有5种状态:R 运行(正在运行或在运行队列中等待)S 中断(休眠中...原创 2019-03-03 23:31:31 · 209 阅读 · 0 评论 -
第12章 连接和协议:编写Web服务器
1.三个主要操作(1)操作1:建立服务器端socket创建一个socket,socket = socket(PF_INET, SOCK_STREAM, 0);给socket绑定一个地址:bind(sock,&addr,sizeof(addr));监听接入请求:listen(sock, queue_size)。将三个步骤合成一个函数make_server_socket...原创 2019-03-09 23:29:20 · 485 阅读 · 0 评论 -
第7章 事件驱动编程:编写一个视频游戏
1.操作系统面临的问题内核将程序载入内存空间并维护每个程序在内存中所处的位置(空间管理)。在内核的调度下,程序以时间片间隔的方式运行,同时内核也在特定的时刻运行特定的内部任务(时间管理,计时器)。内核必须在很短的时间内响应用户和外设在任何时刻的输入(中断,信号处理)。内核必须同时做几件事情,且保持不出现混乱。2.屏幕制作(1)hello1.c-------在屏幕中输出字符串基本的c...原创 2019-03-03 20:26:18 · 631 阅读 · 0 评论 -
第6章 为用户编程:终端控制和信号
对磁盘文件和设备文件不加以区分的程序被称为软件工具,例如who,ls,sort,uniq,grep等。软件工具从标准输入读取字节,进行一些处理,然后将结果的字节流写到到标准输出。3个标准的文件描述符STDIN,STDOUT,STDERR用户程序的例子有vi,emacs,pine,more等,这些程序设置终端驱动程序的击键和输出处理方式,驱动程序有很多设置,但是用户程序常用到的有:(...原创 2019-03-02 10:17:05 · 404 阅读 · 0 评论 -
第4章 文件系统:编写pwd
1.从用户角度看文件系统从用户角度看unix系统中硬盘上的文件组成一棵目录树,每个目录能包含文件或其他目录。du(disk usage 的简称)是用于查找文件和目录的磁盘使用情况的命令,df(disk filesystem 的简称)用于显示 Linux 系统的磁盘利用率。2.unix文件系统的内部结构第一层抽象:从磁盘到分区;第二层抽象:从磁盘到块序列,为磁盘块编号;第三层抽象:从...原创 2019-02-26 21:04:03 · 213 阅读 · 0 评论 -
第10章 I/O重定向和管道
unix进程使用文件描述符0、1和2作为标准输入、输出和错误的通道。当进程请求一个新的文件描述符的时候,系统内核将最低可用的文件描述符赋给它1.将stdin定向到文件(1)close-then-open/* stdinredir1.c * purpose: show how to redirect standard input by replacing file * d...原创 2019-03-04 23:42:21 · 257 阅读 · 0 评论 -
第5章 连接控制:学习stty
1.设备就像文件在unix系统中每个设备都被当做是文件查看unix系统的设备 ls -C /dev | head -5设备不仅具有文件名,而且支持所有与文件相关的系统调用设备文件具有磁盘文件的大部分属性,例如上面ls的输出内容表明/dev/pts/2拥有i-节点4,文件类型是'c',权限位,1个链接,文件所有者bruce和组tty,最近修改时间。设备是链接不是容器,设备i-...原创 2019-02-28 20:24:48 · 255 阅读 · 0 评论 -
第3章 目录与文件属性:编写ls
1.ls常见用法ls做了两件事情:一是列出目录内容,二是显示文件信息2.ls工作原理每个目录至少包含两个特殊 的项,“.”当前目录和“..“上一级目录读取目录需要用到三个函数opendir,readdir,closedir目录结构体struct dirent是 struct dirent { ino_t d_i...原创 2019-02-23 23:41:42 · 390 阅读 · 0 评论 -
第2章 用户、文件操作与联机帮助:编写who命令
unix命令也是程序,把程序的可执行文件放在以下任意目录中:/bin、/usr/bin、/usr/local/bin,unix系统就可以增加一个新命令。1.who命令用于显示当前系统中已经登入的用户信息Linux 查找帮助 man -k key | grep key 2.who的工作原理通过阅读who和utmp的联机帮助,可知道who的工作原理,who通过读utmp文件来获得需要的...原创 2019-02-23 17:25:17 · 228 阅读 · 0 评论 -
第14章 线程机制:并发函数的使用
1.一个简单的线程/* hello_multi.c - a multi-threaded hello world program */#include<stdio.h>#include<pthread.h>#define NUM 5void *print_msg(void *);void main(){ pthread_t t1, t2; /* t...原创 2019-03-27 22:56:12 · 712 阅读 · 0 评论