ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-Clone/Clone.pm
(Generate patch)

Comparing Linux-Clone/Clone.pm (file contents):
Revision 1.1 by root, Mon Nov 28 05:43:03 2011 UTC vs.
Revision 1.2 by root, Wed Aug 24 03:34:24 2016 UTC

6 6
7 use Linux::Clone; 7 use Linux::Clone;
8 8
9=head1 DESCRIPTION 9=head1 DESCRIPTION
10 10
11This module exposes the linux clone(2) and unshare(2) syscalls to 11This module exposes the linux clone(2), unshare(2) and related syscalls to
12Perl. 12Perl.
13 13
14=over 4 14=over 4
15 15
16=item $retval = unshare $flags 16=item $retval = unshare $flags
24 Linux::Clone::NEWNS (in unshare, implies FS) 24 Linux::Clone::NEWNS (in unshare, implies FS)
25 Linux::Clone::VM (in unshare, implies SIGHAND) 25 Linux::Clone::VM (in unshare, implies SIGHAND)
26 Linux::Clone::THREAD (in unshare, implies VM, SIGHAND) 26 Linux::Clone::THREAD (in unshare, implies VM, SIGHAND)
27 Linux::Clone::SIGHAND 27 Linux::Clone::SIGHAND
28 Linux::Clone::SYSVSEM 28 Linux::Clone::SYSVSEM
29 Linux::Clone::NEWUSER (in unshare, implies CLONE_THREAD)
30 Linux::Clone::NEWPID
29 Linux::Clone::NEWUTS 31 Linux::Clone::NEWUTS
30 Linux::Clone::NEWIPC 32 Linux::Clone::NEWIPC
31 Linux::Clone::NEWNET 33 Linux::Clone::NEWNET
34 Linux::Clone::NEWCGROUP
32 35
33Example: unshare the network namespace and prove that by calling ifconfig, 36Example: unshare the network namespace and prove that by calling ifconfig,
34showing only an unconfigured lo interface. 37showing only an unconfigured lo interface.
35 38
36 Linux::Clone::unshare Linux::Clone::NEWNET 39 Linux::Clone::unshare Linux::Clone::NEWNET
122 Linux::Clone::PARENT_SETTID (not yet implemented) 125 Linux::Clone::PARENT_SETTID (not yet implemented)
123 Linux::Clone::CHILD_SETTID (not yet implemented) 126 Linux::Clone::CHILD_SETTID (not yet implemented)
124 Linux::Clone::CHILD_CLEARTID (not yet implemented) 127 Linux::Clone::CHILD_CLEARTID (not yet implemented)
125 Linux::Clone::DETACHED 128 Linux::Clone::DETACHED
126 Linux::Clone::UNTRACED 129 Linux::Clone::UNTRACED
127 Linux::Clone::NEWUSER
128 Linux::Clone::NEWPID
129 Linux::Clone::IO 130 Linux::Clone::IO
130 131
131Note that for practical reasons you basically must not use 132Note that for practical reasons you basically must not use
132C<Linux::Clone::VM> or C<Linux::Clone::VFORK>, as perl is unlikely to cope 133C<Linux::Clone::VM> or C<Linux::Clone::VFORK>, as perl is unlikely to cope
133with that. 134with that.
137Example: do a fork-like clone, sharing nothing, slightly confusing perl 138Example: do a fork-like clone, sharing nothing, slightly confusing perl
138and your libc, and exit immediately. 139and your libc, and exit immediately.
139 140
140 my $pid = Linux::Clone::clone sub { warn "in child"; 77 }, 0, POSIX::SIGCHLD; 141 my $pid = Linux::Clone::clone sub { warn "in child"; 77 }, 0, POSIX::SIGCHLD;
141 142
143=item Linux::Clone::setns $fh_or_fd[, $nstype]
144
145Calls setns(2) on the file descriptor (or file handle) C<$fh_or_fd>. If
146C<$nstype> is missing, then C<0> is used.
147
148At the time of this writing, C<$nstype> can be C<0>, C<Linux::Clone::NEWIPC>,
149C<Linux::Clone::NEWNET>, C<Linux::Clone::NEUTS>, C<Linux::Clone::NEWCGROUP>,
150C<Linux::Clone::NEWNS>, C<Linux::Clone::NEWPID> or C<Linux::Clone::NEWUSER>.
151
142=back 152=back
143 153
144=cut 154=cut
145 155
146package Linux::Clone; 156package Linux::Clone;
147 157
148# use common::sense; 158# use common::sense;
149 159
150BEGIN { 160BEGIN {
151 our $VERSION = '0.01'; 161 our $VERSION = '1.0';
152 162
153 require XSLoader; 163 require XSLoader;
154 XSLoader::load (__PACKAGE__, $VERSION); 164 XSLoader::load (__PACKAGE__, $VERSION);
155} 165}
156 166

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines