
函数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 输出:

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 执行结果:

本文介绍了C程序中的system函数,详细解释了其执行命令字符串的过程及返回值的意义。同时,还探讨了进程如何通过调整友好值来改变调度优先级的方法。
第8章-5 system函数、进程调度、进程时间&spm=1001.2101.3001.5002&articleId=110589710&d=1&t=3&u=85191002e9664fb68effc68c77617306)
15万+

被折叠的 条评论
为什么被折叠?



