本文主要是用来整理存放在进行操作系统实验时遇到的问题、原因以及解决方案,不当之处,欢迎读者批评指正。
实验环境:Linux(Ubuntu18.04.4)
随着实验的进行会经常更新的 : )
【杂】操作系统实验过程问题整理
1. 进入root权限
使用sudo
命令,并在系统提示的时候输入密码。
1.1 临时使用root权限
直接在sudo
后空格写上想要在root权限下执行的命令
$sudo + command
1.2 打开一个有root权限的终端
$sudo su
2. setpriority()函数用法及注意事项(C)
2.1 函数说明
用来设置进程、进程组、用户进程的动态优先级的系统调用
2.2 函数用法
头文件
#include <sys/time.h>
#include <sys/resource.h>
函数定义
int setpriority(int which, int who, int prio);
参数 | 解释 |
---|---|
which : | 设置的对象。可以是进程(PRIO_PROCESS)、进程组(PRIO_PGRP),用户(PRIO_USER)。 |
who : | 对应对象的进程号或组号或用户号 |
prio : | 要设置的优先级数。介于-20 至20 之间. 代表进程执行优先权, 数值越低代表有越高的优先级 |
优先数VS优先级
在这里优先数越小,对应的进程优先级越高
返回值
返回所有匹配进程中最高的优先数
2.3 使用注意事项
一般用户无法降低优先级,只有具有root权限的用户才可以执行降低优先级的操作。
在实验三的时候,执行降低优先级的代码一直不起作用,检查了好多次也没有找出代码的错误,最终发现是因为没有使用root权限造成的。
3. FILE结构体
参考自:Linux下的FILE*结构体
FILE结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的FILE结构体。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。
4. fgets()函数
4.1 函数说明
读取文件,获得文件指针
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
4.2 函数定义
char *fgets(char *s, int n, FILE *stream);
参数 | 解释 |
---|---|
s : | 字符型指针,指向存储读入数据的缓冲区的地址。 |
n : | 读取字符的最大数量为n-1 |
stream : | 指向FILE结构体的指针 |
5.feof()函数
5.1 函数说明
测试给定流 stream 的文件结束标识符
5.2 函数定义
int feof(FILE *stream)
5.3 返回值
当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。