首页 > 解决方案 > Linux通配符(*)是在用户空间还是内核空间实现的?

问题描述

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

mv * folder
ls *

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

这是上下文

标签: linuxwildcard

解决方案


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

是的,是的。

我认为他们会使用系统调用 glob(3) 来完成此操作。系统调用发生在内核空间。glob(3) 还会进行其他系统调用,例如 opendir(),它们也在内核空间中运行。


推荐阅读