2013-06-21 4 views
1

Мне поручено написать модуль Perl, который требует использования Perl XS. Я никогда не использовал Perl XS, но я посмотрел документацию здесь: http://perldoc.perl.org/perlxs.html, и похоже, что мне понадобится исходный код C для системного вызова getpagesize. Я попытался ищу getpagesize.c через yum как так ...Написание модуля Sys :: Getpagesize Perl для системного вызова getpagesize (справочная страница GETPAGESIZE (2))

$ sudo yum provides */getpagesize.c 

... но я, кажется, не имеют каких-либо RPMs, которые обеспечили бы getpagesize.c.

Может ли кто-нибудь помочь мне из-за канавы, в которую я, кажется, въехал?

Благодаря

ответ

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()». стандартный POSIX модуль

Perl имеет sysconf уже:

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

Вы просто должны быть в состоянии сделать:

getconf PAGESIZE