Sun::Solaris::Exacct - exacct system calls and error handling
use Sun::Solaris::Exacct qw(:EXACCT_ALL); my $ea_rec = getacct(P_PID, $$);
This module provides access to the ea_error(3EXACCT) function and for all the extended accounting system calls. Constants from the various libexacct(3LIB) header files are also provided.
ea_error(3EXACCT)
libexacct(3LIB)
The P_PID, P_TASKID, P_PROJID and all the EW_*, EP_*, EXR_* macros are provided as Perl constants.
P_PID
P_TASKID
P_PROJID
EW_*
EP_*
EXR_*
getacct($idtype, $id)
The $idtype parameter must be either P_TASKID or P_PID and $id must be a corresponding task or process ID. This function returns an object of type Sun::Solaris::Exacct::Object, representing the unpacked accounting buffer returned by the underlying getacct(2) system call. In the event of error, undef is returned.
$idtype
$id
Sun::Solaris::Exacct::Object
getacct(2)
undef
putacct($idtype, $id, $record)
The $idtype parameter must be either P_TASKID or P_PID and $id must be a corresponding task or process ID. If $record is of type Sun::Solaris::Exacct::Object, it is converted to the corresponding packed libexacct object and passed to the putacct(2) system call. If $record is not of type Sun::Solaris::Exacct::Object it is converted to a string using the normal Perl conversion rules and stored as a raw buffer. For predictable and endian-independent results, any raw buffers should be constructed using the Perl pack() function. This function returns true on success and false on failure.
$record
putacct(2)
pack()
true
false
wracct($idtype, $id, $flags)
The $idtype parameter must be either P_TASKID or P_PID and $id must be a corresponding task or process ID. The $flags parameter must be either EW_INTERVAL or EW_PARTIAL. The parameters are passed directly to the underlying wracct(2) system call. This function returns true on success and false on failure.
$flags
EW_INTERVAL
EW_PARTIAL
wracct(2)
ea_error()
This function provides access to the ea_error(3EXACCT) function. It returns a double-typed scalar that in a numeric context will be one of the EXR_* constants. In a string context it will be a descriptive error message. This is the exacct equivalent to the $! (errno) Perl variable.
$!
errno
ea_error_str()
This function returns a double-typed scalar that in a numeric context will be one of the EXR_* constants as returned by ea_error. In a string context it describes the value returned by ea_error. If ea_error returns EXR_SYSCALL_FAIL, the string value returned is the value returned by strerror(3C). This function is provided as a convenience so that repeated blocks of code like the following can be avoided:
ea_error
EXR_SYSCALL_FAIL
strerror(3C)
if (ea_error() == EXR_SYSCALL_FAIL) { print("error: $!\n"); } else { print("error: ", ea_error(), "\n"); }
ea_register_catalog($cat_pfx, $catalog_id, $export, @idlist)
This convenience function is a wrapper around the Sun::Solaris::Exacct::Catalog->register() method.
Sun::Solaris::Exacct::Catalog->register()
ea_new_catalog($integer)
ea_new_catalog($cat_obj)
ea_new_catalog($type, $catalog, $id)
These convenience functions are wrappers around the Sun::Solaris::Exacct::Catalog->new() method. See Sun::Solaris::Exacct::Catalog(3).
Sun::Solaris::Exacct::Catalog->new()
Sun::Solaris::Exacct::Catalog(3)
ea_new_file($name, $oflags, creator => $creator, aflags => $aflags, mode => $mode)
This convenience function is a wrapper around the Sun::Solaris::Exacct::File->new() method. See Sun::Solaris::Exacct::File(3).
Sun::Solaris::Exacct::File->new()
Sun::Solaris::Exacct::File(3)
ea_new_item($catalog, $value)
This convenience function is a wrapper around the Sun::Solaris::Exacct::Object::Item->new() method. See Sun::Solaris::Exacct::Object::Item(3).
Sun::Solaris::Exacct::Object::Item->new()
Sun::Solaris::Exacct::Object::Item(3)
ea_new_group($catalog, @objects)
This convenience function is a wrapper around the Sun::Solaris::Exacct::Object::Group->new() method. See Exacct::Object::Group(3).
Sun::Solaris::Exacct::Object::Group->new()
Exacct::Object::Group(3)
ea_dump_object($object, $filehandle)
This convenience function is a wrapper around the Sun::Solaris::Exacct::Object->dump() method. See Sun::Solaris::Exacct::Object(3).
Sun::Solaris::Exacct::Object->dump()
Sun::Solaris::Exacct::Object(3)
None.
By default nothing is exported from this module. The following tags can be used to selectively import constants and functions defined in this module:
:SYSCALLS getacct(), putacct(), and wracct() :LIBCALLS ea_error() and ea_error_str() :CONSTANTS P_PID, P_TASKID, P_PROJID, EW_*, EP_*, and EXR_* :SHORTHAND ea_register_catalog(), ea_new_catalog(), ea_new_file(), ea_new_item(), and ea_new_group() :ALL :SYSCALLS, :LIBCALLS, :CONSTANTS, and :SHORTHAND :EXACCT_CONSTANTS :CONSTANTS, plus the :CONSTANTS tags for Sun::Solaris::Catalog, Sun::Solaris::File, and Sun::Solaris::Object :EXACCT_ALL :ALL, plus the :ALL tags for Sun::Solaris::Catalog, Sun::Solaris::File, and Sun::Solaris::Object
See attributes(5) for descriptions of the following attributes:
attributes(5)
___________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Availability | CPAN (http://www.cpan.org) | |_____________________________|_____________________________| | Interface Stability | Evolving | |_____________________________|_____________________________|
getacct(2), putacct(2), wracct(2), ea_error(3EXACCT), Sun::Solaris::Exacct::Catalog(3), Sun::Solaris::Exacct::File(3), Sun::Solaris::Exacct::Object(3), Sun::Solaris::Exacct::Object::Group(3), Sun::Solaris::Exacct::Object::Item(3), libexacct(3LIB), attributes(5)
Sun::Solaris::Exacct::Object::Group(3)
The modules described in the Sun::Solaris::Exacct manual pages make extensive use of the Perl "double-typed scalar" facility. This facility allows a scalar value to behave either as an integer or as a string, depending upon context. It is the same behavior as exhibited by the $! Perl variable (errno). It is useful because it avoids the need to map from an integer value to the corresponding string to display a value. Some examples are provided below:
Sun::Solaris::Exacct
# Assume $obj is a Sun::Solaris::Exacct::Item my $type = $obj->type(); # Print "2 EO_ITEM" printf("%d %s\n", $type, $type); # Behave as an integer, $i == 2 my $i = 0 + $type; # Behave as a string, $s = "abc EO_ITEM xyx" my $s = "abc $type xyz";
Wherever a function or method is documented as returning a double-typed scalar, the returned value exhibits this type of behavior.
To install Sun::Solaris::Exacct, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Sun::Solaris::Exacct
CPAN shell
perl -MCPAN -e shell install Sun::Solaris::Exacct
For more information on module installation, please visit the detailed CPAN module installation guide.