当从 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() 信息维护系统调用。
这个问题的测验