【问题标题】:Can system calls be invoked in source code, without a library that doesn't come with the OS?可以在源代码中调用系统调用,而无需操作系统不附带的库吗?
【发布时间】:2016-05-16 19:06:52
【问题描述】:

系统调用函数由操作系统直接提供。 一些库(例如 GNU C 库)提供了封装操作系统系统调用的函数,但操作系统不直接提供。

在 Linux 中,我可以在我的 C 代码中调用系统调用函数,而无需操作系统直接提供的库(例如 GNU C 库)吗?操作系统是否为其系统调用提供库?

例如,如果我想在我的C程序中直接调用系统调用函数read(),我应该包含哪个头文件?我必须使用一些库吗?

【问题讨论】:

标签: c linux system-calls


【解决方案1】:

是的,你可以。

你想要的标头通常在/usr/include/linux

进行系统调用的最低级别方法是直接使用INT 0x80 汇编指令,当然您无需任何库即可使用。

【讨论】:

  • 作为补充,在 中有函数 syscall,它使用您想要的系统调用 ID 和参数调用 INT 80。
  • 谢谢。 (1) /usr/include/linux 中的库名称是什么? (2)汇编语言中不存在“库”的概念吗?汇编语言是否有类似于“库”或代替“库”的概念?
  • 包含目录包含标题,而不是可链接库。 linux 目录包含带有诸如系统调用号之类的常量的标头。不,汇编程序没有你使用这个词的方式的“库”——最接近的方法是静态链接一些 C 代码,但你明确表示你想在没有 glibc 之类的东西的情况下这样做,这是 unistd代码来自。
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 2015-11-22
  • 2011-09-24
  • 1970-01-01
  • 2014-12-25
  • 2011-08-31
  • 1970-01-01
  • 2012-04-29
相关资源
最近更新 更多