博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unix环境高级编程-读书笔记(7)
阅读量:6614 次
发布时间:2019-06-24

本文共 577 字,大约阅读时间需要 1 分钟。

终端登陆:

1BSD终端登陆:当 系统自举时,内核创建进程ID为1的进程,也就是init进程,init进程使系统进入多用户模式,init读取文件/etc/ttys,对每一个允许登陆的终端,init调用一次fork,所生成的子进程则exec getty程序。getty对终端设备调用open函数,将终端打开,然后getty输出login之类的信息,等待用户输入用户名。

进程组:

是一个或多个进程的集合,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有唯一的进程组ID,每个进程组有一个组长,组长可以创建一个进程组、创建该组的进程,只要进程组有一个进程存在,则进程组存在。

一个进程只能为它自己或者子进程设置进程组ID,在子进程调用了exec后,就不能在更改子进程的进程组ID。

一般胡在fork之后调用此函数,使父进程设置其子进程的进程组ID,并且使子进程设置其自己的进程组ID,这两个调用有一个是冗余的,但让父进程和子进程都这样做能够保证,在父进程和子进程认为子进程已进入该进程组之前,这确实已经发生了,如果不这样做,在fork之后,由于父进程和子进程运行先后顺序不一定,会因为子进程的组员身份取决于哪个进程首先执行而产生竞争条件。

转载于:https://www.cnblogs.com/sichenzhao/p/9320365.html

你可能感兴趣的文章
记录-baidutemplate的JavaScript模版
查看>>
在EF中构建业务层小记
查看>>
Go语言的管道Channel用法
查看>>
ASP.NET WEB页面多语言支持解决方案(转)
查看>>
matlab坐标轴设置
查看>>
Android开发环境搭建及配置phoneGap
查看>>
cg数据类型
查看>>
angularjs $http 服务
查看>>
离散卷积与自相关----------信号处理系列[原创]
查看>>
java 观察者模式
查看>>
Azure SQL Database (19) Stretch Database 概览
查看>>
VBA概述之在Office产品中创建自己的应用程序
查看>>
在C#中使用属性控件添加属性窗口
查看>>
linux内核驱动中对字符串的操作【转】
查看>>
delegate引用参数示例
查看>>
printf()详解之终极无惑
查看>>
交叉检验---训练数据,验证数据和测试数据
查看>>
Emacs中多个golang项目的配置方法
查看>>
Linux下的Backlight子系统(一)【转】
查看>>
AspNetPager分页控件配置
查看>>