linux - Linux通配符(*)是在用户空间还是内核空间实现的?
问题描述
到目前为止,我已经研究过 Linux 中的通配符是位于 /etc/glob 中的二进制文件,或者位于称为 glob() 的 C 函数中。现在它在任何基于 Unix 的系统中都是本机的,但是,当我们键入以下内容时,理解它的运行位置会令人困惑:
mv * folder
ls *
它是在用户空间还是内核空间运行?
这是上下文
解决方案
当内核代表用户程序(即系统调用)执行时,是否使用内核空间?还是它是所有内核线程(例如调度程序)的地址空间?
是的,是的。
我认为他们会使用系统调用 glob(3) 来完成此操作。系统调用发生在内核空间。glob(3) 还会进行其他系统调用,例如 opendir(),它们也在内核空间中运行。
推荐阅读
- flutter - 如何获取 Map 中键/值对的索引?
- r - 替代 dplyr 包中的“领导”功能?
- javascript - 如何在 HTML 脚本中使用 Crypto-JS?
- javascript - 如何使用 HTML、CSS 和 JavaScript 根据值更改行的背景颜色?
- smtp - 使用 SSO 登录设置 Google 帐户的 Gmail SMTP
- xamarin.forms - 从 xamarin 中的 ViewModel 检索嵌入的图像
- java - org.hibernate.property.access.spi.PropertyAccessException:访问字段时出错
- r - dplyr:聚合连续日期时间和条件
- sql - 使用带有 Quill 连接的过滤查询
- c++ - 在程序中使用 assert 语句时出错