Вы можете использовать FFI :: Platypus , чтобы легко создать Perl-интерфейс для такой функции с помощью libffi.Это хороший и простой, поскольку он просто берет одно целое и возвращает одно целое, но я все еще хотел бы добавить больше аргументов Perlish и обработку ошибок, что позволяет метод присоединения FFI :: Platypus.
#!/usr/bin/env perl
use strict;
use warnings;
use FFI::Platypus;
use Carp 'croak';
use feature 'say';
my $ffi = FFI::Platypus->new;
$ffi->lib(undef);
$ffi->attach(getsid => ['int'] => 'int' => sub {
my $xsub = shift;
my $rc = $xsub->(@_ ? $_[0] : 0);
croak "$!" if $rc < 0;
return $rc;
});
say getsid();
say getsid(0);
say getsid($$);
say getsid(1);
say getsid(-1);
Вывод:
3276
3276
3276
1
No such process at ...