Unix-Linux编程实践教程
ziggy7
这个作者很懒,什么都没留下…
展开
-
第15章 进程间通信
几种方式●talk命令 功能:talk可以同时等待两个文件描述符的输入,读取字符并将它们写到目的地。 实现:不能像下面这样,因为read会阻塞直到有输入,可能在第一个read处就挂起。使用非阻塞的方式可以工作,但是占用太多处理器时间。因为每次调用read都是一个系统调用,程序就必须回到内核模式工作,在等待一个字符来之前可能切换上千次。 select系统调用:允许程序挂起,并等待从不止一个文件描述符的输入。/* selectdemo.c : watch for input on two de原创 2020-05-12 16:47:52 · 120 阅读 · 0 评论 -
第14章 线程机制:并发函数的使用
多线程●相关函数1.pthread_create独立线程不需要释放掉,执行完自动结束pthread_create只能接受一个参数,当要传入多个参数时,可以用结构体来传参2.pthread_join如果忘记使用pthread_join来收回线程,线程占用的资源就无法回收,类似于用malloc没有free3.pthread_mutex_lock用来避免访问冲突,在某一时刻只有唯一的线程可以对变量进行访问。4.pthread_mutex_unlock5.pthread_cond_wa原创 2020-05-12 10:10:56 · 198 阅读 · 0 评论 -
第13章 基于数据报的编程
数据报模式不需要listen,服务器申请socket,绑定地址,接收消息。客户端申请socket,发送消息。原创 2020-05-11 10:32:33 · 111 阅读 · 0 评论 -
第12章 连接和协议:编写web服务器
服务器/客户系统的三个步骤:(1):服务器设立服务(2):客户连接到服务器(3):服务器与客户处理事务 步骤一与步骤二加起来就是建立起服务器与客户的连接步骤1:建立服务器端socket过程比较固定,将三个步骤合成一个函数:make_server_socket//返回sock,可以用fdopen进行读写sock=make_server_socket(int portnum) 步骤2:建立到服务器的连接 将两个操作合成一个函数:connect_to_server//返回对应的文件描述原创 2020-05-11 09:42:12 · 230 阅读 · 0 评论 -
第11章下 与远端进程相连:socket
管道使得进程向其他进程发送数据就像文件发送数据一样容易,但是管道具有两个重大的缺陷。管道在一个进程中被创建,通过fork实现共享。因此管道只能连接同一台主机上的进程。 而socket允许在不相关的进程间创建类似管道的连接,甚至可以连接其他主机上的进程。●socket编程重要概念(1)客户和服务器服务器是提供服务的程序,等待请求、处理请求、继续等待。客户端不需要循环,只需建立连接,与服务器交换数据,然后继续自己的工作。(2)主机名和端口运行在网上的服务器只是某台计算机上运行的一个进程,该计算机称原创 2020-05-09 11:06:58 · 149 阅读 · 0 评论 -
第11章上:bc/dc、fdopen、popen
●传递数据1.磁盘、设备文件用open命令连接,用read和write传递数据2.管道用pipe命令创建,用fork共享,用read和write传递数据3.sockets用socket、listen和connect连接,用read和write共享数据●访问数据方式1.从文件获取数据依赖于特定的文件格式和结构体的特定成员名称,如utmp2.从函数中获得数据使用基于API的信息服务兼容性可能不是太好,可能缺失某些库3.从进程中获取数据由命令来负责格式以及库函数,不是自己编写的程序,兼容原创 2020-05-09 09:58:38 · 613 阅读 · 0 评论 -
第10章 I/O重定向与管道
●I/O重定向●三个标准数据流与标准文件描述符 如果不指定输入或输出的文件名,会默认使用下面的输入输出。0:标准输入stdin1:标准输出stdout2:标准错误输出stderr●重定向I/O的是shell而不是程序 通过使用输出重定向标志,命令cmd>filename告诉shell将文件描述符1定位到文件,程序只是不断的将数据写入文件描述符1,并没有意识到数据的目的地改变。...原创 2020-05-08 11:05:55 · 214 阅读 · 0 评论 -
第9章 可编程的shell、shell变量和环境:编写自己的shell
shell脚本的编程特征除了命令还包含:(1)变量分为局部变量和环境变量 环境变量:可以使用环境变量如HOME的值。HOME变量由login程序设置,可以被login进程所有的子进程使用。子进程运行新的程序时不会清除环境变量。(2)用户输入如read命令告诉shell从标准输入读入字符串(3)控制 shell脚本可以用if then else fi while case for ...原创 2020-05-08 09:33:03 · 148 阅读 · 0 评论 -
第8章 进程和程序:编写命令解释器sh
进程 在Unix术语中,一个可执行程序是一个机器指令及其数据的序列每一个进程是程序运行时的内存空间和设置。可以用ps命令查看进程。 系统进程中的很大一部分是没用终端与之相连的,它们在系统启动时启动,而不是由用户在命令行输入。 内存可以看作是一个容纳内核和进程的空间。Unix中的内存分为系统空间和用户空间,进程存在与用户空间。内存实际上就是一个字节序列,或者很大的数组,如果机器有64MB的内存...原创 2020-05-07 16:55:55 · 158 阅读 · 0 评论 -
第7章 事件驱动编程:编写一个视频游戏
问题游戏,操作系统面临的问题解决问题屏幕编程:curses库curses内部有虚拟和实际屏幕,调用refresh将改动更新到实际屏幕,类似于磁盘缓存时钟编程●sleep(n):将当前进程挂起n秒,或者等待一个不能忽略的信号唤醒 sleep调用了Alarms,由三个步骤组成1.signal(SIGALRM,handler);//将信号与函数连接,时间一到就发送信号到进程,然后调用...原创 2020-05-06 15:29:07 · 121 阅读 · 0 评论 -
第6章 为用户编程:终端控制和信号
终端模式:关闭规范输入,即时响应开启非阻塞输入信号●信号从哪来以及有哪些●如何处理信号综合运用以上知识的是否继续代码/* play_again4.c * When no is input , restore the tty settings */ #include <stdio.h> #include <termios.h> #i...原创 2020-05-05 17:26:18 · 181 阅读 · 0 评论 -
第5章:linux连接控制
●磁盘连接:使用open和fcntl可以改变文件描述符属性,如开启缓冲或者自动添加模式(原子操作)原创 2020-05-05 14:51:47 · 121 阅读 · 0 评论 -
linux文件系统:pwd命令的编写
Unix文件系统内部结构创建文件的过程如果是大文件,i节点不够存储分配列表,就在数据块中存储分配列表并指向它目录结构一个文件的文件名从父目录访问。目录包含的是文件的引用即(ino,name),称为链接,文件没有文件名,链接有名字。系统调用mkdir、rmdir、unlink(如rm)、link(如ln)、rename(如mv)、pwd.c●如何判断到达根目录?…的in...原创 2020-05-04 21:03:58 · 277 阅读 · 0 评论 -
ls命令的编写
目录结构体direntstat函数从文件名获得信息st_mode其中三个特殊位●set-user-id:用来给程序额外的权限,如passwd修改密码●set-group-id:用来给程序某个组的访问权限●sticky位:告诉程序即使没有人使用程序,也要放在交换空间使用掩码来处理st_mode,0170000是掩码,结果与下面的数比较,得到文件类型用宏处理掩码/etc/...原创 2020-05-03 20:36:11 · 359 阅读 · 0 评论 -
linux文件的读写如注销过程
1.打开文件utmpfd=open(UTMP_FILE,O_RDWR);2.从utmp找到你所在终端的登录记录while循环读取utmp记录,将ut_line字段跟myline作比较while(read(fd,rec,utmplen)==utmplen)if(strcmp(rec.ut_line,myline)==0) //如果相同 revise_entry(); //删掉3....原创 2020-05-03 16:21:57 · 263 阅读 · 1 评论 -
CP命令的编写
#include<stdio.h>#include<unistd.h>// POSIX 操作系统 API 的访问功能的头文件的名称#include<fcntl.h>#include<stdlib.h>#define BUFFERSIZE 4096#define COPYMODE 0644//赋予文件0644权限void oops...原创 2020-04-30 16:51:40 · 265 阅读 · 0 评论 -
如何编写who命令
总结自书《Unix-Linux编程实践教程》who命令一、who命令能做什么1.输入命令显示用户名、终端名、登录时间等信息**2.阅读手册 ** man whoNAME:命令名以及命令的简短说明SYNOPSYS(概要):命令格式DESCRIPTION:命令功能的详细阐述以及参数选项二.who命令如何工作1.阅读手册了解到与utmp文件有关wtmp与登录和注销有关,现在用不...原创 2020-04-30 14:04:38 · 493 阅读 · 0 评论