更新澄清:
Wrapper 函数定义为在用户模式下调用的函数,它发起对系统调用的调用(在内核模式下)。例如 open 或 printf。
我想知道包装函数可以获得的参数数量是否有任何限制?
我的直觉是,由于寄存器的数量,它应该是六个,但我不确定。我知道系统调用仅限于六个参数。(我说的是存在更多寄存器的 32 位和 64 位)。
谢谢
Wrapper 函数定义为在用户模式下调用的函数,它发起对系统调用的调用(在内核模式下)。例如 open 或 printf。
根据您自己的定义,他们可以接收的参数数量没有限制。printf
应该马上告诉你的。(但请注意,这open
本身就是一个系统调用,并且对参数的数量有限制)
但是当涉及到系统调用等open
时,write
Linux-x86有 6 个参数的限制。阅读此处了解为什么以及如何发生这种情况。
这是另一篇关于此的深入探讨的 SO 帖子