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

📅  最后修改于: 2021-09-24 06:38:22             🧑  作者: Mango

当从 UNIX/Linux 操作系统中的单线程进程执行时,以下哪些标准 C 库函数将始终调用系统调用?
(一)退出
(二) malloc
(三)睡眠
(D)紧张答案: (A) (C)
解释:

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

替代方式——

lib fun 是编译器支持的,而 syscall 是操作系统支持的。
下面说明了 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() 信息维护系统调用。

这个问题的测验