Linux_UNIX编程手册-读书笔记-第二十八章(详述进程创建和程序执行)

28.1 进程记账

打开进程记账功能后,内核会在每个进程终止时将一条记账信息写入系统级进程记账文件。
这条账单记录包含了内核为该进程所维护的多种信息,包含终止状态以及进程消耗的CPU时间。

打开和关闭进程记账功能
一般将相应命令置于系统启动脚本中,在系统每次重启时打开进程记账功能
在这里插入图片描述
参数为记账文件的路径名,若为NULL则关闭记账功能。

** 进程记账记录**
一旦进程终止,就会有一条acct记录写入记账文件。
在这里插入图片描述
在这里插入图片描述
ac_flag:该字段是为进程记录多种事件的位掩码。
在这里插入图片描述
ac_comm: 记录了该进程最后执行的命令名称。
ac_exitcode字段保存着进程的退出状态。

进程记账文件格式(版本三)
与前版本唯一差别是,写入记账文件的记录格式不同。在这里插入图片描述
以下是主要差别:
在这里插入图片描述

28.2 系统调用clone()

类似于fork()和vfork() , linux特有的clone() 也可以创建一个新进程。
与前者不同的是,clone在进程创建期间对步骤的控制更加精准(但可移植性不强)

在这里插入图片描述
与fork不同的是,克隆生成的子进程继续运行时不以调用处为起点,转而去调用以参数func所指定的函数,func又称为子函数。
当func函数返回,或是调用exit()之后,克隆产生的子进程就会终止。

调用者必须分配一块大小适中的内存空间供子进程的栈使用,同时将这块内存的指针置于参数child_stack中。在大多数硬件架构中,栈空间的增长方向是向下的,所以参数child_stack应当指向所分配的内存块的高端。

参数flags服务于双重目的。低字节中存放着子进程的终止信号,子进程退出时其父进程将收到这一信号。剩余字节则存放位掩码,用于控制clone()的操作。

在这里插入图片描述
在这里插入图片描述
clone() 的余下参数分别是:ptid,tls 和 ctid,这些参数与线程的实现相关,尤其是在针对线程ID以及线程本地储存的使用方面。

28.4 exec()和fork()对进程属性的影响

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值