Написание модуля Perl для Sys::Getpagesize для системного вызова getpagesize (страница руководства GETPAGESIZE(2))
Мне было поручено написать модуль Perl, который требует использования Perl XS. Я никогда не использовал Perl XS, но я посмотрел документацию здесь: http://perldoc.perl.org/perlxs.html и похоже, что мне понадобится исходный код C для getpagesize
системный вызов. Я пытался искать getpagesize.c
с помощью yum
вот так...
$ sudo yum provides */getpagesize.c
... но у меня нет никаких RPM, которые бы getpagesize.c
,
Может ли кто-нибудь помочь мне выбраться из канавы, в которую я, кажется, въехал?
Спасибо
2 ответа
Почему вы думаете, что вам нужен исходный код 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 );