c++ error函数_UNIX环境高级编程(APUE)第8章-5 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值