c++ error函数_UNIX环境高级编程(APUE)第8章-5 system函数、进程调度、进程时间

本文介绍了C程序中的system函数,详细解释了其执行命令字符串的过程及返回值的意义。同时,还探讨了进程如何通过调整友好值来改变调度优先级的方法。

96ace2dc66407a6933e718e9856fabf9.png

函数system

在程序中执行一个命令字符串。也就是在一个C程序中调用一行命令行。

#include 

返回值

因为system在其实现中调用了fork、exec、waitpid,其实就是few的一个简单封装,因此有3种返回值。 1. fork失败或者waitpid返回除ENTER以外的错误,则system返回-1,并设置errno以指示错误类型 2. 如果exec失败(表示不能执行shell),则返回时如同shell执行了exit(127) 3. 否则所有3个函数都成功,那么system的返回值时shell的终止状态,其格式已在waitpid中说明。

system函数(不对信号处理)

#include    

可以看到,其实就是一个简单的对fork、exec和waitpid的一个封装,从而让其执行命令行。

举例:调用system函数

#include 

输出:

9d63ae559e397fed5f1cd8114c7ae380.png

16 进程调度

友好值

进程可以通过调整友好值选择以更低优先级哦运行(通过调整友好值降低它对CPU的战友,因此该进程是“友好的”)。只有特权进程允许提高调度权限。

调整友好值

进程可以通过nice函数获取或者更改它的友好值。使用这个函数,进程只能影响自己的友好值,不能影响其他任何进程的友好值

#include 

若成功则返回新的友好值,若出错则返回-1. 参数incr被增加到调用进程的友好值上,如果incr太大,系统会直接把它降到最大合法值,不给出提示;如果太小会直接把它升到最小合法值

函数getpriority可以像nice那样获取进程的友好值,此外,它还可以获取一组相关进程的友好值。

#include 

若成功返回友好值,失败返回-1. 参数选择: which:PRIO_PROCESS代表进程,PRIO_PGRP表示进程组,PRIO_USER表示用户ID。

函数setpriority可以为进程、进程组和属于特定用户ID的所有进程设置优先级。

#include 

17 进程时间

最开始就说明了,我们可以度量3个时间:墙上时钟时间、用户CPU时间和系统CPU时间。任一进程都可调用times函数获得它自己以及已终止子进程的上述值。

#include 

返回值: 若成功返回时钟滴答数,若出错返回-1 tms结构体:

struct 

注意: 此结构体没有包含墙上时钟时间。times函数返回墙上时钟时间作为函数值。此值时相对于过去某一个时刻度量的,所以不能用其绝对值而必须使用其相对值。 例如: 调用times,保存其返回值。以后某个时间再次调用times,从新返回的值中减去以前返回的值,这个差值就是墙上时钟时间。 所有由times函数返回的clock_t值都用_SC_CLK_TCK(由sysconf函数返回的每秒时钟滴答数)转换成秒数。

实例

#include 

执行结果:

cd2e7653bbf5b7d52ea10a88c022c931.png
本数据集来源于 2024 年 7 月在江西省中东部余干县、贵溪市、金溪县丘陵林地采集的千枚岩、红砂岩、花岗岩母质发育红壤关键带剖面土壤实测数据,空间覆盖 3 个县域不同岩性风化壳林地,采样点位经纬度分别为千枚岩剖面 P10(116.8316°E,28.5269°N)、红砂岩剖面 P08(117.1048°E,28.3492°N)、花岗岩剖面 P04(116.6883°E,27.9963°N);垂直空间采样深度存在差异,千枚岩与花岗岩剖面采样深度 0~600 cm,红砂岩剖面采样深度 0~450 cm,垂直分层采样分辨率为 0~50 cm 区间分 0~20 cm、20~50 cm 两层,50 cm 以下土层以 50 cm 为固定间隔分层,整套数据集共包含 36 条土壤剖面分层记录,其中 P10 千枚岩剖面 13 条、P08 红砂岩剖面 11 条、P04 花岗岩剖面 13 条。数据采集时间为 2024 年 7 月,实验室理化指标、矿物测试、酸碱滴定及统计建模工作于 2024 年 7 月 —2026 年 5 月完成,无时间序列连续监测数据,仅为单次野外剖面采样静态数据集。 数据集包含野外剖面基础信息、土壤酸碱滴定原始数据、土壤酸度指标、交换性盐基与交换性酸、土壤机械组成、有机质、黏土与原生矿物半定量 XRD 数据、无定形 / 晶形铁铝氧化物含量。全量理化指标计量单位统一规范:酸缓冲容量 pHBC 单位为 cmol・kg⁻¹・pH⁻¹,交换性酸、交换性盐基离子单位为 cmol・kg⁻¹,矿物以质量百分比(%)表示,、黏粒 / 粉粒 / 砂粒、有机质、铁铝氧化物单位均为g/kg,pH 为无量纲数值。 覆盖范围: 中位纬度: 28.2616 中位经度: 116.89654999999999 南界纬度: 27.9963 西界经度: 116.6883 北界纬度: 28.5269 东界经
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值