Написание модуля 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 );

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

getconf PAGESIZE
Другие вопросы по тегам