📜  门| GATE CS 2021 |设置1 |问题24

📅  最后修改于: 2021-06-29 04:58:40             🧑  作者: Mango

从UNIX / Linux操作系统中的单线程进程执行时,以下哪个标准C库函数将始终调用系统调用?
(一)出口
(B)分配
(三)睡觉
(D)惊呆了答案: (A) (C)
解释:

  • (一种)。退出C库函数–
    正常终止进程,执行常规清理以终止程序。
  • (B)。 malloc –
    这是在标准C库中定义的函数,并不总是调用系统调用。创建进程后,已经为其分配了一定数量的堆内存,当需要扩展或缩小该内存时,它会在Unix / Linux上内部使用sbrk / brk系统调用。
  • (C)。睡觉 –
    这甚至不是标准的C库函数,它是POSIX标准的C库函数,始终会调用系统调用。
  • (D)。惊呆了–
    这是在标准C库中定义的函数,并且不需要任何系统调用来执行其计算所述字符串的长度的函数。

替代方式–

lib fun支持编译器,而syscall支持OS。
下面说明了UNIX操作系统的各种等效系统调用:

1.过程控制–

fork(),
exit(),
wait()

2.文件管理–

open(),
read(),
write(),
close()

3.设备管理–

ioctl(),
read(),
write()

4.信息维护–

getpid(),
alarm(),
sleep(),

5.交流–

pipe(),
shm_open(),
mmap()

6.保护–

chmod(),
umask(),
chown()

因此,exit()是UNIX操作系统中的过程控制系统调用和sleep()信息维护系统调用。

这个问题的测验