【问题标题】:When should syscall function be used instead of glibc wrapper?什么时候应该使用 syscall 函数而不是 glibc 包装器?
【发布时间】:2016-03-12 05:04:07
【问题描述】:

syscallman 页面说,“当 c 库中没有包装函数时它很有用”。如果包装功能可用,使用包装功能总是更好吗?如果没有,什么时候应该更喜欢syscall

【问题讨论】:

  • 我想不出任何时候我需要使用syscall。使用包装器。
  • 嗨@EdHeal,我的问题是受到在 strace 测试套件中大量使用系统调用的启发。例如,请参阅this
  • 它正在测试内核。这与日常使用有什么关系
  • @EdHeal :虽然,对于capget 测试,使用了包装函数。有什么原因吗?

标签: linux system-calls glibc


【解决方案1】:

从不。

您应该永远考虑使用syscall() 的唯一情况是调用在您的C 库中没有包装器的系统调用。与 libc 包装器相比,它绝对没有优势,而且有很多缺点。 (例如:它不太清晰,不可移植,并且绕过了对参数数量和类型的编译时检查。)

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2019-06-15
    • 2012-06-07
    • 2011-06-22
    • 2015-12-11
    • 2012-02-12
    相关资源
    最近更新 更多