3
更新以澄清:Unix中的包裝函數參數是否有限制?
包裝函數被定義爲在用戶模式下調用的函數,它啓動對系統調用的調用(在內核模式下)。例如open或printf。
我想知道包裝函數可以得到的參數數量是否有限制?
我的介紹是,它應該是六個,因爲寄存器的數量,但我不知道。我知道系統調用僅限於六個參數。 (我正在談論更多寄存器存在的32位和64位)。
感謝
更新以澄清:Unix中的包裝函數參數是否有限制?
包裝函數被定義爲在用戶模式下調用的函數,它啓動對系統調用的調用(在內核模式下)。例如open或printf。
我想知道包裝函數可以得到的參數數量是否有限制?
我的介紹是,它應該是六個,因爲寄存器的數量,但我不知道。我知道系統調用僅限於六個參數。 (我正在談論更多寄存器存在的32位和64位)。
感謝
包裝函數被定義爲所謂的在用戶模式下的功能,這 發起系統調用的調用(在內核模式)。例如打開, 或printf。
通過自己定義,有上,他們能接受的參數個數沒有限制。 printf
應該馬上告訴你。 (但是要注意,open
本身是一個系統調用,並有一定的侷限性對參數的個數)
但是,當涉及到系統調用像open
,write
等,Linux的x86的有6個參數的限制。 Read here至於爲什麼以及如何。
這裏是另一個SO張貼在深深對此
What are the calling conventions for UNIX & Linux system calls on x86-64
打算做什麼,你可以「包裝」的功能?系統調用(從應用程序到內核)實際上限於6個參數(在x86 32位上,因爲它們使用寄存器來傳遞參數)。 – 2012-04-09 15:16:33
-1我認爲這裏有一個很好的問題,但不清楚被問到的是什麼。我低調鼓勵澄清編輯。 – 2012-04-09 15:22:12
@WilliamPursell - 謝謝,我已經更新了我的問題。現在你可以把-1取回:) – meitalbs 2012-04-09 18:26:38