进程单元测试题

一、选择题(每题2分,总分30分)

1. 下列不是用户进程的组成部分的是( D )

[A] 正文段        [B] 用户数据段        [C] 系统数据段        [D]  elf段

根据进程的基本概念,进程是由正文段、用户数据段以及系统数据段共同组成的一个执行环境。其中:

  • 正文段(也称为代码段):存放被执行的机器指令,这部分是只读的,允许正在运行的两个或多个进程之间共享这一代码。
  • 用户数据段:存放进程在执行时直接进行操作的所有数据,包括进程使用的全部变量在内,这部分的信息可以被改变。每个进程需要有自己的专用用户数据段。
  • 系统数据段:有效地存放程序运行的环境,包括进程的控制信息等。

选项D中的"elf段"。ELF(Executable and Linkable Format)是一种用于可执行文件、目标代码、共享库以及核心转储的标准文件格式。虽然ELF文件与进程的执行有关,但"elf段"本身并不是用户进程的组成部分。

【正确答案:[D]  elf段】

2.  以下哪种不是进程的类型 (  )

   [A]  批处理进程       [B] 管理进程     [C] 交互进程      [D]  守护进程

回顾一下进程的类型:

  • [A] 批处理进程:这是与Windows原来的批处理类似的进程,是一个进程序列,负责按照顺序启动其他进程。
  • [C] 交互进程:这是由shell启动的进程,既可以在前台运行,也可以在后台运行。在执行过程中,它要求与用户进行交互操作。
  • [D] 守护进程:这是执行特定功能或执行系统相关任务的后台进程。它不是内核的组成部分,但在系统启动时可能启动,并在系统关闭前持续运行。

选项B:管理进程。

在操作系统的上下文中,虽然有一个进程管理系统(负责创建、调度、终止进程等),但“管理进程”本身并不是一个特定的进程类型。它是一个更广泛的概念,涉及多个进程和组件,用于管理系统的各种资源。

【正确答案:[B] 管理进程】

3. 如果umask的值为022,创建文件时指定的权限是775,则该文件的实际权限为 (  )

   [A] 755        [B] 722       [C] 753       [D] 022

在Unix和类Unix系统中,umask是一个用于控制新创建文件和目录权限的遮罩值。当创建一个新文件或目录时,系统会使用你指定的权限(如775对于文件或777对于目录)与umask值进行按位与的反操作(即AND NOT~AND)来确定最终的权限。

首先,解释给定的权限和umask值:

  • 文件指定的权限:775(二进制为111 111 101
  • umask的值:022(二进制为000 010 010

使用按位与的反操作来确定最终权限:

  • 对于用户(owner)权限:111 AND NOT 000 = 111(即7)
  • 对于组(group)权限:111 AND NOT 010 = 101(即5)
  • 对于其他用户(others)权限:101 AND NOT 010 = 101(即5)

【正确答案: [A] 755】

4. 用open( )创建新文件时,若该文件存在则可以返回错误信息的参数是 (  )

[A] O_CREAT     [B] O_EXCL      [C] O_TRUNC       [D] O_NOCTTY

在Unix和类Unix系统的open()系统调用中,要创建新文件或打开已存在的文件,并希望在文件已存在时返回错误信息,你需要使用特定的标志组合。

  • [A] O_CREAT:如果文件不存在,则创建它。如果文件已存在,则此选项不产生任何效果。
  • [B] O_EXCL:与O_CREAT一起使用时,如果文件已存在,则调用失败并返回错误。
  • [C] O_TRUNC:如果文件存在且为普通文件,并且成功打开以进行写操作或读/写操作,则将其长度截断为零。此选项对打开已存在的文件有影响,但它不会阻止文件被打开。
  • [D] O_NOCTTY:如果路径名指向终端设备,则不要将该设备分配为进程的控制终端。这与文件是否已存在无关。

因此,要在文件已存在时返回错误信息,你需要使用O_CREATO_EXCL这两个标志的组合。但根据题目要求,单独的标志是O_EXCL

【正确答案: [B] O_EXCL】

5. 如果键盘输入为abcdef,程序如下所示,打印结果应该是(  )

   char  buffer[6];

   ……

   fgets(buffer, 6, stdin);

   printf(“%s”, buffer);

   [A]  abcde       [B] abcdef     [C] abcdef 后出现乱码     [D]  段错误

首先,理解fgets函数的工作原理。fgets函数从指定的流(在这个例子中是stdin)中读取一行,并将其存储在提供的缓冲区中,直到遇到换行符('\n')、EOF或达到指定的最大字符数(包括空字符'\0')。

给定的代码片段中,fgets(buffer, 6, stdin);尝试从stdin读取最多5个字符(因为缓冲区大小为6,但还需要一个位置来存储字符串的结束符'\0')并存储在buffer数组中。

现在,键盘输入为abcdef

  1. fgets会读取前5个字符('a', 'b', 'c', 'd', 'e')并存储在buffer中。
  2. fgets会在字符串的末尾添加一个空字符'\0'来标记字符串的结束。
  3. 然后,printf(“%s”, buffer);会打印出存储在buffer中的字符串,即abcde

由于fgets在读取5个字符后遇到换行符('\n')之前就已经达到了最大字符数,所以换行符不会被读取到buffer中,因此输出中也不会包含换行符或任何其他额外的字符(如选项C中的乱码)。

另外,由于缓冲区足够大来存储输入的字符串和结束符,所以也不会出现段错误(如选项D)。

【正确答案: [A]  abcde】

6. 下列哪个函数无法传递进程结束时的状态 (  )

[A]close         [B] exit          [C] _exit       [D] return

首先,理解这些函数在Unix和类Unix系统中的用途和上下文。

  • [A] close:这个函数用于关闭一个文件描述符。它并不涉及进程的结束或状态传递。
  • [B] exit:这个函数用于终止调用它的进程,并返回一个状态值给父进程。父进程可以通过wait()waitpid()等系统调用来获取这个状态值。
  • [C] _exit:这个函数也用于终止进程,但它不会执行标准I/O清理(如刷新缓冲区)。它也会返回一个状态值给父进程。
  • [D] return:在main函数中,return语句用于结束程序并返回一个状态值给操作系统(实际上是传递给父进程)。在非main函数中,return只返回给调用它的函数。

分析这些选项:

  • [A] close 显然与进程结束时的状态传递无关。
  • [B] exit 和 [C] _exit 都可以传递一个状态值给父进程。
  • [D] return 在main函数中也可以传递一个状态值给操作系统(实际上是父进程)。

但是,如果return在非main函数中使用,它就不会传递进程结束时的状态给父进程,因为它只是返回给调用它的函数。但题目没有明确说return是在哪个函数中使用,所以我们假设它是在main函数中使用的。

然而,从题目的语境来看,我们是在寻找一个“无法传递进程结束时的状态”的函数,而这个函数就是[A] close

【正确答案: [A]close】

7. 以下哪种用法可以等待接收进程号为pid的子进程的退出状态 (  )

 [A]  waitpid(pid, &status, 0)         [B]  waitpid(pid, &status, WNOHANG)

  [C]  waitpid(-1, &status, 0)          [D]  waitpid(-1, &status, WNOHANG)

在给出的选项中,要等待接收进程号为pid的子进程的退出状态,应该使用waitpid函数并指定正确的参数。

  • [A] waitpid(pid, &status, 0):这个用法会阻塞父进程,直到进程ID为pid的子进程结束,并将子进程的退出状态保存在status指向的变量中。这是符合题目要求的。
  • [B] waitpid(pid, &status, WNOHANG):这个用法使用WNOHANG选项,它会使waitpid在子进程没有结束时立即返回。这意味着父进程不会被阻塞,但可能无法立即获取子进程的退出状态。
  • [C] waitpid(-1, &status, 0):这个用法会阻塞父进程,直到任意一个子进程结束。因为指定了-1作为进程ID,所以它会等待任何子进程。
  • [D] waitpid(-1, &status, WNOHANG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值