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