2013-06-21 46 views
1

我的任務是編寫一個需要使用Perl XS的Perl模塊。我從來沒有使用Perl XS,但我已經看過這裏的文檔:http://perldoc.perl.org/perlxs.html,看起來我需要C源代碼來調用getpagesize系統。我試圖通過yum像這樣尋找getpagesize.c ...編寫一個用於系統調用getpagesize的Sys :: Getpagesize Perl模塊(手冊頁GETPAGESIZE(2))

$ sudo yum provides */getpagesize.c 

...但我似乎不具備,將提供getpagesize.c任何RPM。

任何人都可以幫助我走出溝渠,我似乎已經進入?

感謝

回答

3

爲什麼你認爲你需要的源代碼以getpagesize功能?您只需鏈接到系統的版本。我還沒有嘗試過,但這樣的事情應該工作:

#include "EXTERN.h" 
#include "perl.h" 
#include "XSUB.h" 
#include <unistd.h> /* man 2 getpagesize says to use this */ 

MODULE = Sys::Getpagesize PACKAGE = Sys::Getpagesize 

int 
getpagesize() 

但在這種情況下,你不應該需要編寫XS的。 man 2 getpagesize說「便攜式應用程序應該使用sysconf(_SC_PAGESIZE)而不是getpagesize()」。

Perl的標準POSIX模塊有sysconf不已:

use POSIX qw(sysconf _SC_PAGESIZE); 
print sysconf(_SC_PAGESIZE); 
1

您應該簡單地能夠做到:

getconf PAGESIZE