Name
SPVM::Sys - System Calls for File IO, User, Process, Signal, Socket
Description
SPVM::Sys
is the Sys
class in SPVM language. It provides system calls such as file IO, user manipulation, process, socket, time,
This class provides methods compatible with functions related to system calls provided by Perl.
This distribution contains many modules for system calls such as Sys::IO, Sys::Socket, Sys::Process. See "Modules".
Methods compatible with file IO, sockets, file paths, current directory, select, and poll are implemented as other modules such as IO::File, IO::Socket, Cwd. See "See Also".
Usage
use Sys;
Sys->mkdir("foo");
Sys->rmdir("foo");
my $path = Sys->env("PATH");
my $process_id = Sys->getpid;
Class Methods
env
static method env : string ($name : string);
Gets an environment variable. The same as getting of the Perl $ENV{$name}.
osname
static method osname : string ()
Gets OS name. The same as Perl $^O.
Currently the following OS names are supported.
linux
darwin
MSWin32
freebsd
openbsd
solaris
A
static method A : double ($file : string);
Script start time minus file access time, in days. The same as Perl -A.
C
static method C : double ($file : string);
Script start time minus file inode change time, in days. The same as Perl -C.
M
static method M : double ($file : string);
Script start time minus file modification time, in days. The same as Perl -M.
O
static method O : int ($file : string);
File is owned by real uid. The same as Perl -O.
R
static method R : int ($file : string);
File is readable by real uid/gid. The same as Perl -R.
S
static method S : int ($file : string);
File is a socket. The same as Perl -S.
W
static method W : int ($file : string);
File is writable by real uid/gid. The same as Perl -W.
X
static method X : int ($file : string);
File is executable by real uid/gid. The same as Perl -X.
b
static method b : int ($file : string);
File is a block special file. The same as Perl -b.
c
static method c : int ($file : string);
File is a character special file. The same as Perl -c.
d
static method d : int ($file : string);
File is a directory. The same as Perl -d.
e
static method e : int ($file : string);
File exists. The same as Perl -e.
f
static method f : int ($file : string);
File is a plain file. The same as Perl -f.
g
static method g : int ($file : string);
File has setgid bit set. The same as Perl -g.
k
static method k : int ($file : string);
File has sticky bit set. The same as Perl -k.
l
static method l : int ($file : string);
File is a symbolic link (false if symlinks aren't supported by the file system). The same as Perl -l.
o
static method o : int ($file : string);
File is owned by effective uid. The same as Perl -l.
p
static method p : int ($file : string);
File is a named pipe (FIFO), or Filehandle is a pipe. The same as Perl -p.
r
static method r : int ($file : string);
File is readable by effective uid/gid. The same as Perl -r.
s
static method s : long ($file : string);
File has nonzero size (returns size in bytes). The same as Perl -s.
u
static method u : int ($file : string);
File has setuid bit set. The same as Perl -u.
w
static method w : int ($file : string);
File is writable by effective uid/gid. The same as Perl -u.
x
static method x : int ($file : string);
File is executable by effective uid/gid. The same as Perl -x.
z
static method z : int ($file : string);
File has zero size (is empty). The same as Perl -z.
time
static method time : long ();
Returns the number of non-leap seconds since whatever time the system considers to be the epoch, suitable for feeding to gmtime and localtime. The same as the Perl time.
localtime
static method localtime : Sys::Time::Tm ($time : long);
Converts a time as returned by the time function to a Sys::Time::Tm object with the time analyzed for the local time zone. The same as the Perl localtime.
gmtime
static method gmtime : Sys::Time::Tm ($time : long);
Works just like localtime, but the returned values are localized for the standard Greenwich time zone. The same as the Perl gmtime.
process_id
static method process_id : int ();
Gets the process number of the running this program. The same as the Perl $$.
stat
static method stat : Sys::IO::Stat ($path : string);
Returns a Sys::IO::Stat object giving the status info for a file. The same as the Perl stat function.
chdir
static method chdir : int ($path : string);
Changes the working directory to $path. The same as the Perl chdir function.
If succeed, returns 1.
chmod
static method chmod : int ($mode :int, $path : string);
Changes the permissions of a file. The same as the Perl chmod function.
If succeed, returns 1.
mkdir
static method mkdir : int ($path : string, $mode : int);
Creates the directory specified by $path and $mode. The same as the Perl mkdir function.
If succeed, returns 1.
umask
static method umask : int ($mode : int);
Sets the umask for the process to $mode and returns the previous value. The same as the Perl umask function.
rmdir
static method rmdir : int ($path : string);
Deletes the directory specified by $path. The same as the Perl rmdir function.
If succeed, returns 1.
opendir
static method opendir : int ($dh_ref : Sys::IO::DirStream[], $dir : string);
Calls the opendir method in the Sys::Socket class.
The return value is set to $dh_ref->[0].
If succeed, returns 1.
closedir
static method closedir : int ($dirp : Sys::IO::DirStream);
Calls the opendir method in the Sys::Socket class.
If succeed, returns 1.
unlink
static method unlink : int ($pathname : string);
Deletes a file. The same as the Perl unlink function.
If succeed, returns 1.
rename
static method rename : int ($oldpath : string, $newpath : string);
Changes the name of a file. The same as the Perl rename function.
If succeed, returns 1.
readlink
static method readlink : int ($file : string);
Returns the value of a symbolic link. The same as the Perl readlink function.
symlink
static method symlink : int ($oldpath : string, $newpath : string);
Creates a $newpath symbolically linked to the $oldpath. The same as the Perl symlink function.
If succeed, returns 1.
sleep
static method sleep : int ($seconds : int);
Causes the program to sleep for $seconds seconds. The same as the Perl sleep.
ioctl
static method ioctl : int ($fd : int, $request : int, $request_arg_ref : object of byte[]|short[]|int[]|long[]|float[]|double[]|object = undef);
Calls the ioctlsocket method in the Sys::Ioctl class in Windows.
Calls the ioctl method in the Sys::Ioctl class in other systems.
select
static method select : int ($readfds : Sys::Select::Fd_set, $writefds : Sys::Select::Fd_set, $exceptfds : Sys::Select::Fd_set, $timeout : Sys::Time::Timeval);
Calls the select method in the Sys::Select class with the $ndfs set to 1024.
bind
static method bind : int ($sockfd : int, $addr : Sys::Socket::Sockaddr);
The next argument $addrlen is set to the size of the $addr.
Calls the bind method in the Sys::Socket class with the $addrlen.
If succeed, returns 1.
listen
static method listen : int ($sockfd : int, $backlog : int);
Calls the listen method in the Sys::Socket class.
If succeed, returns 1.
accept
static method accept : Sys::Socket::Sockaddr ($new_sockfd_ref : int*, $sockfd : int);
The next argument $addrlen is set to 128.
Calls the accept method in the Sys::Socket class with $addrlen, and returns the $addr.
The original return value is set to $$new_sockfd_ref.
connect
static method connect : int ($sockfd : int, $addr : Sys::Socket::Sockaddr);
The next argument $addrlen is set to the size of the $addr.
Calls the connect method in the Sys::Socket class with the $addrlen.
If succeed, returns 1.
getpeername
static method getpeername : Sys::Socket::Sockaddr ($sockfd : int);
The next argument $addrlen is set to 128.
Calls the getpeername method in the Sys::Socket class.
The return valus is convert to a child Sys::Socket::Sockaddr object using to_family_sockaddr method in the Sys:Socket|SPVM::Sys::Socket class.
getsockname
static method getsockname : Sys::Socket::Sockaddr ($sockfd : int)
The next argument $addrlen is set to 128.
Calls the getsockname method in the Sys::Socket class.
The return valus is convert to a child Sys::Socket::Sockaddr object using to_family_sockaddr method in the Sys:Socket|SPVM::Sys::Socket class.
recv
static method recv : int ($sockfd : int, $buf : mutable string, $len : int, $flags : int, $buf_offset : int = 0);
Calls the recv method in the Sys::Socket class.
send
static method send : int ($sockfd : int, $buf : string, $len : int, $flags : int, $buf_offset : int = 0);
Calls the send method in the Sys::Socket class.
shutdown
static method shutdown : int ($sockfd : int, $how : int);
Calls the shutdown method in the Sys::Socket class.
If succeed, returns 1.
socket
static method socket : void ($sockfd_ref : int*, $domain : int, $type : int, $protocol : int);
Calls the socket method in the Sys::Socket class with the $domain, $type, $protocal, and the return value is set to $$sockfd_ref.
socketpair
static method socketpair : int ($sock_fd1_ref : int*, $sock_fd2_ref : int*, $domain : int, $type : int, $protocol : int);
Creates a new int array with the length 2 for the next argument $pair.
Calls the socketpair method in the Sys::Socket class with the $pair, and the $$sock_fd1_ref is set the first element of the $pair, and the $$sock_fd2_ref is set the second element of the $pair, nad
If succeed, returns 1.
setsockopt
static method setsockopt : int ($sockfd : int, $level : int, $optname : int, $optval : object of string|Int);
If the $optval is the Int type, a string for the next argument $optval is created by the length 4.
If the $optval is the string type, a string that for the next argument $optval is created by the length of the $optval.
Calls the getsockopt method in the Sys::Socket class with the $optval and $optlen.
If succeed, returns 1.
Exceptions:
The $optval must be defined. Otherwise an exception is thrown.
The type of $optval must be Int or string. Otherwise an exception is thrown.
getsockopt
static method getsockopt : string ($sockfd : int, $level : int, $optname : int, $optlen : int = -1);
If the $optlen is less than 0, it is set to 4.
A string for the next argument $optval is created by the length $optlen.
Calls the getsockopt method in the Sys::Socket class with the $optval and $optlen, and the $optval set by this method is returnd.
Modules
All modules included in this distribution. These classes have methods that directly correspond to Linux/Unix/Mac or Windows system call functions written in C. In addition, several helper methods are implemented.
Sys::Env
Sys::Env
Sys::IO
Sys::IO
Sys::IO::Constant
Sys::IO::Dirent
Sys::IO::DirStream
Sys::IO::FileStream
Sys::IO::Flock
Sys::IO::Stat
Sys::IO::Utimbuf
Sys::Ioctl
Sys::Ioctl
Sys::Ioctl::Constant
Sys::OS
Sys::OS
Sys::Poll
Sys::Poll
Sys::Poll::Constant
Sys::Poll::PollfdArray
Sys::Process
Sys::Process
Sys::Process::Constant
Sys::Select
Sys::Select
Sys::Select::Constant
Sys::Select::Fd_set
Sys::Signal
Sys::Signal
Sys::Signal::Constant
Sys::Signal::Handler
Sys::Signal::Handler::Default
Sys::Signal::Handler::Ignore
Sys::Signal::Handler::Monitor
Sys::Signal::Handler::Unknown
Sys::Socket
Sys::Socket
Sys::Socket::Addrinfo
Sys::Socket::AddrinfoLinkedList
Sys::Socket::Constant
Sys::Socket::Error
Sys::Socket::Error::InetInvalidNetworkAddress
Sys::Socket::In6_addr
Sys::Socket::In_addr
Sys::Socket::Ip_mreq
Sys::Socket::Ip_mreq_source
Sys::Socket::Ipv6_mreq
Sys::Socket::Sockaddr
Sys::Socket::Sockaddr::In
Sys::Socket::Sockaddr::In6
Sys::Socket::Sockaddr::Interface
Sys::Socket::Sockaddr::Storage
Sys::Socket::Sockaddr::Un
Sys::Time
Sys::Time
Sys::Time::Constant
Sys::Time::Itimerval
Sys::Time::Timespec
Sys::Time::Timeval
Sys::Time::Timezone
Sys::Time::Tms
Sys::Time::Tms
Sys::User
Sys::User
Sys::User::Group
Sys::User::Passwd
Sys::FileTest
Sys::FileTest (Deparecated)
See Also
IO::File
IO::Socket
IO::Select
IO::Poll
File::Spec
Cwd
Author
Yuki Kimoto(https://github.com/yuki-kimoto)
Contributors
Gabor Szabo(https://github.com/szabgab)
Repository
Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License