Linux通配符(*)是在用户空间还是内核空间上实现的?

问题描述 投票:0回答:2

到目前为止,我已经研究过Linux中的通配符是位于/ etc / glob或称为glob()的C函数中的二进制文件。如今,它在任何基于Unix的系统中都是本机,但是当我们键入类似的内容时,很难理解它的运行位置:

mv * folder
ls *

是在用户空间还是内核空间中运行?

这是context

linux wildcard
2个回答
0
投票

这是在您提供的示例中的shell级别上完成的,例如bash,tcsh等。我将假定使用C库函数glob(3)来完成此操作。这是严格的用户空间。


0
投票

是代表用户程序执行内核时使用的内核空间,即系统调用?还是所有内核线程的地址空间(例如调度程序)?

是和是。

他们将使用系统调用glob(3)来完成此任务。系统调用在内核空间中进行。此外,glob(3)还会进行其他系统调用,例如opendir(),它们也在内核空间中运行。

© www.soinside.com 2019 - 2024. All rights reserved.