答案 0 :(得分:2)
尝试使用内置的syscall
函数
require 'syscall.ph';
$sid = syscall(SYS_getsid, $process_id);
答案 1 :(得分:2)
POSIX::2008中有一个getsid
:
getsid
sid = getsid(pid);
pid 默认为0。
答案 2 :(得分:2)
您可以使用FFI::Platypus来使用libffi轻松创建此类函数的Perl接口。这个很好而且很简单,因为它只需要一个整数并返回一个整数,但是我仍然喜欢添加更多Perlish参数和错误处理,这是FFI :: Platypus的attach方法允许的。
rebase
输出:
#!/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);