(笔记demo)Linux系统编程 进程部分笔记

1.fork创建子进程时,先复制一份父进程,大部分数据都会被复制,但父进程会返回子进程的id,子进程返回0,以此区分

以umask举例,umask就是直接父进程后,直接输出自己的umask,如果创建一个0777权限的文件,因为要首先从父进程复制一份,然后0022会和0777进行一些处理(掩码,或非操作?)

2.情况分析:

        父进程给子进程收尸

        父进程死亡,子进程由孤儿院(初始进程,pid为1)收尸

        产生子进程以后bash就会进入睡眠,等待子进程结束然后执行收尸操作

        父进程和子进程谁先执行看cpu心情,o(* ̄︶ ̄*)o

3.eviron用setenv取得的环境变量改变不会影响原值,因为改变的只是子进程接住的变量罢了

4.bash的多操作多文件命令,多半是用了ecec族函数

5.shell重定向的逻辑:

        ecec调用程序分配待操作文件描述符

        然后重定向到目标流

        关闭原文件描述符

        ecec再次调用程序运行,此时原流已经被重定向为目标流

6.waitpid()可以用于父进程接收子进程的退出情况以及状态码,以此分析

7.管道

        实质:建立一块内存空间以及两个文件描述符,分别表示读端和写端

        特殊情况:因为两个端口分别对应 关闭 空 满 是否阻塞 所以会有多种特殊情况

8.共享内存

        实现逻辑:

        1.用户自定义序号并且序号通过哈希处理形成一个key值        

        2.key值在内核申请空间,与共享空间描述符(shmid)绑定,形成一个键值对,申请空间时和open创建文件类似,可以设置创建模式和权限

        3.用户使用shmid在用户空间进行映射,映射地址(shmp)可以设置

        4.对用户映射空间shmp进行操作,会被内核里的共享空间所保留

        5.取消映射

        6.第二个用户映射shmid时,shmid里的内容会映射到用户2的shmp里,这样,用户1操作就出现在了用户2

        7.删除共享空间              

9.消息队列

        消息队列和IPC通信类似,消息队列通过结构体对消息进行了分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值