2012-04-09 59 views
3

更新以澄清:Unix中的包裝函數參數是否有限制?

包裝函數被定義爲在用戶模式下調用的函數,它啓動對系統調用的調用(在內核模式下)。例如open或printf。

我想知道包裝函數可以得到的參數數量是否有限制?

我的介紹是,它應該是六個,因爲寄存器的數量,但我不知道。我知道系統調用僅限於六個參數。 (我正在談論更多寄存器存在的32位和64位)。

感謝

+0

打算做什麼,你可以「包裝」的功能?系統調用(從應用程序到內核)實際上限於6個參數(在x86 32位上,因爲它們使用寄存器來傳遞參數)。 – 2012-04-09 15:16:33

+1

-1我認爲這裏有一個很好的問題,但不清楚被問到的是什麼。我低調鼓勵澄清編輯。 – 2012-04-09 15:22:12

+0

@WilliamPursell - 謝謝,我已經更新了我的問題。現在你可以把-1取回:) – meitalbs 2012-04-09 18:26:38

回答

0

包裝函數被定義爲所謂的在用戶模式下的功能,這 發起系統調用的調用(在內核模式)。例如打開, 或printf。

通過自己定義,有上,他們能接受的參數個數沒有限制printf應該馬上告訴你。 (但是要注意,open本身是一個系統調用,並有一定的侷限性對參數的個數)

但是,當涉及到系統調用openwrite等,Linux的x86的有6個參數的限制。 Read here至於爲什麼以及如何。

這裏是另一個SO張貼在深深對此

What are the calling conventions for UNIX & Linux system calls on x86-64

相關問題