ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:565.03KB ,
资源ID:6798163      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6798163.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux学习读书笔记333上传.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

linux学习读书笔记333上传.docx

1、linux学习读书笔记333上传第4天(进程通讯)-1(进程间通讯概述)、1、 进程间通信:数据传输、资源共享、通知事件、进程控制2、 发展:UNIX进程通信3、 Posix可移植操作系统接口,利用在移植中4、 Syetem v :UNIX中的一个分区5、 分类:1、管道2、信号3、信号队列4、共享内存5信号量6套接字第4天(进程通讯)-2(管道通讯)1、 管道通信:单向的、先进先出无名管道(用于父子进程):int pipe (int filedis2);filedis0用于读管道;filedis1写管道有名管道(任意进程):创建int mkfifo(const char*pathname文件

2、名,mode_t mode属性)操作:图6-4关闭管道close管道通信例子见图6-1/fd为整型Pipe_rw.c例子图6-2;6-3Fifo_write.c 图6-5和 fifo_read.c图6-6利用fifo通信第4天(进程通讯)-3(信号通讯)1、 信号通信用函数产生信号killed命令产生信号类型见图6-7常见信号见图6-7、信号处理:1、忽略此信号(sigkill和sigstop不能忽略)2、 执行用户希望的动作3、 执行系统默认动作(大多数默认是终止该信号)int kill()信号发送:kill可以给我i自己发,raise只能给自身发int raise()Alarm函数:在未来

3、一个时间(在参数中设置)产生sigalarmPause使进程等待知道收到信号信号处理:signal函数void(*signal(int signo,void(*func)(int )(int)如何理解上段程序 例子见图6-9/My signal kill sigstop tss kill-si have get a fuck第4天(进程通讯)-4(共享内存通讯) 1、 共享内存:把物理内存共享出一部分,供进程写入共享内存步骤:1、创建shmget2/映射共享内存创建int shmget()*映射int shmat()参数:标识符、flag接触映射int shmdt()例子见图7-1第5天(进程

4、通讯)-1(消息队列)1、 进程间通信程序设计:消息队列(管道只能传递无格式队列,消息队列可以克服这个问题)发展:消息队列就是=一个消息的链表,具有特定格式分类:POSIX消息队列;V消息队列持续性:重启内核才能消除键值:消息队列对应唯一的键值读键值key_t ftok()返回文件名对应键值(文件名,项目名不为零即可)打开/创建:int msgget(键值,标志位)返回值键值描绘IPC_CREAT创建新的消息队列IPC_EXCL与IPC_CREAT一同使用,表示如果要创建的消息队列已经存在返回错误IPC_NOWAIT读写消息队列要求无法得到满足时,不阻塞什么情况可以建立新的消息队列:1、假如没

5、有与键值相对应消息队列2、 key参数为IPC_PRIVATE创建消息队列例子:例子见图8-1发送消息:int msgsnd(int msqid,struct msgbuf.)图8-2消息格式:struct msgbuflong mtype;Char mtext1接收消息:int msgtcv()从msqid代表中读取一个msgtyp类型消息 例子见图8-3实例图8-4(min3240)第5天(进程通讯)-2(信号量)1、信息量:又名信号灯。主要用途是保护临界资源。进程根据他判断是否访问共享资源(忙标志位只有0和1)2、创建/打开:int semget(键值,nsems制定打开的信号灯数目,)

6、3、操作:int semop(int semid信号量集的ID,struct sembuf*sops是一个操作数组,表明要进行什么操作,unsigned nsops sops所指向数组的元素数量)4、操作:struct sembuf(min13)5、线程的优点:比进程节俭(进程需要地理地址空间,进程开销大其30倍)多线程:遵循POSIX例子第1天(编程基础)-3(makefile工程管理)wenGNU make 构建和管理自己的文件工程统一管理需要一个Makefile的文件Make 文件规则Makefile例子,见图1-1Hello : main.o func1.o func2.0Makefi

7、le术语:targets:prerequisites commanf目标 依赖 命令例子:main.o: main.c gcc-c main.c文件名:make在默认情况会自动寻找makefile文件伪目标:没有任何依赖只有动作的目标变量:添加变量两种方法,例子图1-2默认变量:见图1-3杂项:1注释#/ make vi makefile rm hello第2天(文件编程)-1(系统调用方式访问文件)系统调用:1、创建 intcreat ,filenameFilenameMode 可执行1可写2可读4例子:见图2-1程序/gcc file_creat o file_creat文件描述 所有文件

8、都对应一个文件描述符可执行1可写2可读4系统调用打开:pathname:要打开的文件名Flags打开标志:例如:O_CREATE实例分析:见图2-2程序/rm file open.c gcc open.c/分析程序系统调用 关闭:fd:文件描述符系统调用 读 int read (int fd,const void *buf,)系统调用 写 int write ()系统调用 定位 int iseek (int fd ,offset_t offset .int whence)Seek_set开头Seek_cur中间Seek_end末尾哦系统调用 访问判断:int access() 例子 file_

9、cp.c第2天(文件编程)-2(库函数访问文件)Contents库函数;独立于平台库函数-创建和打开:FILE*fopen(const char)Filename:打开的文件名(包含路劲Mode: 打开模式库函数-打开模式库函数创建和打开,见图3-1库函数-读:size_t fread(void*ptr,size_tsize,)库函数-写:size_t fwrite()库函数-读字符:int fgetc(FILE*stream)从指定文件读一个字符)例子图3-2库函数写字符:int fputc(int c ,FILE*stream)向指定文件写一个字符例子图3-3库函数-格式化读:fscanf

10、(FILE*stream,char *format,argument)格式化输入例子图3-4库函数-格式化写:fscanf(FILE*stream,char *format,argument)格式化输入例子图3-5%s字符串%d整型库函数-定位:int fseek(FILE *stream)路径获取:char *getcwd(char )例子图3-6创建目录:int mkdir()第2天(文件编程)-3(时间编程)时间类型:1.标准时间;2.日历时间时间获取:time_t time()例子(如何获取1970年某时间到现在的秒数)例子用、*typedef long time_t*/时间转化:见图

11、3-7时间保存:见图3-8时间获取:例子见图3-9/cd is gcc time.c o time1time data怎么确定时区,安装系统的时候选择了时区时间显示:1.char *asctime()将tm格式时间转化为支付串2.char *ctime()将日历时间转化为本地时间的字符串形式时间显示例子图3-10/gcc time.c o time2 ./time2 获取时间:int gettimefday()从凌晨到现在的秒数 例子见图3-11fution()函数运行的时间/#include 延时执行:unsigned int sleep (second秒)Void usleep (long

12、 usec微妙)第3天(进程控制)-1(进程控制原理)Linux 进程控制程序设计昨天;系统调用和库函数调用的区别,系统调用依赖Linux1、 进程控制理论基础(操作系统原理)、进程定义:与程序区别,程序是静态的特点:动态性,并发性状态:状态图见图4-1:就绪态-执行态-阻塞态进程ID(PID):标识进程的唯一数字父进程ID(PPID):、启动进程的用户ID(UID)进程互斥:只允许一个进程访问的临界资源临界区进程同步;一组并发进程按一定的顺序执行过程称为i进程的同步。进程调度:按一定算法,选择一个进程来给CPU运行调度方式:1.抢占式2.非抢占式调度算法:1、先来先服务2、短进程优先3、优先

13、级4、时间片轮死锁:多个进程因竞争而使得大家都无法调用CPU第3天(进程控制)-2(进程控制程序设计)进程控制编程获取ID:pid_t getpid(void)获取本进程ID pid_t getppid(viod)获取父进程 例子图5-1/gcc getpid.c进程创建 fork:pid_fork(void)产生子进程 例子图5-2图5-3count显示两次,父进程一次,子进程一次,他们共享下面的代码 (count=1;count=1)数据不共享进程创建vfork,与父进程共享数据段,子进程先运行;fork拷贝父进程的数据段,不确定谁先运行Vfork例子图5-4:count被打印两次,子进程count=1;父进程count=2;exec函数族,不会创建新的进程int execl(const char*path,const char *arg1,.)path:被执行程序名(含完整路径) ;arg1argn:被执行程序所需的命令行参数,含程序名例子见图5-5Int execlp()无需路径 例子见图5-6Int execv(); argv字符串数组例子见图5-7Int system()产生子进程,由子进程执行进程等待:pid_t wait(nt *status)阻塞该进程 例子见图58

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2