This is a raw POSIX interface module. It does not not provide any convenience: cstrings are used instead of proper Nim strings and return codes indicate errors. If you want exceptions and a proper Nim-like interface, use the OS module or write a wrapper.
For high-level wrappers specialized for Linux and BSDs see: posix_utils
Coding conventions: ALL types are named the same as in the POSIX standard except that they start with 'T' or 'P' (if they are pointers) and without the '_t' suffix to be consistent with Nim conventions. If an identifier is a Nim keyword the `identifier` notation is used.
This library relies on the header files of your C compiler. The resulting C code will just #include <XYZ.h> and not define the symbols declared here.
Types
AddrInfo {.importc: "struct addrinfo", pure, final, header: "<netdb.h>".} = object ai_flags*: cint ## Input flags. ai_family*: cint ## Address family of socket. ai_socktype*: cint ## Socket type. ai_protocol*: cint ## Protocol of socket. ai_addrlen*: SockLen ## Length of socket address. ai_addr*: ptr SockAddr ## Socket address of socket. ai_canonname*: cstring ## Canonical name of service location. ai_next*: ptr AddrInfo ## Pointer to next in list.
- struct addrinfo Source Edit
Blkcnt {.importc: "blkcnt_t", header: "<sys/types.h>".} = clong
- used for file block counts Source Edit
DIR {.importc: "DIR", header: "<dirent.h>", incompleteStruct.} = object
- A type representing a directory stream. Source Edit
Dirent {.importc: "struct dirent", header: "<dirent.h>", final, pure.} = object d_ino*: Ino d_off*: Off d_reclen*: cushort d_type*: int8 d_name*: array[256, cchar]
- dirent_t struct Source Edit
Glob {.importc: "glob_t", header: "<glob.h>", final, pure.} = object gl_pathc*: csize_t ## Count of paths matched by pattern. gl_pathv*: cstringArray ## Pointer to a list of matched pathnames. gl_offs*: csize_t ## Slots to reserve at the beginning of gl_pathv. gl_flags*: cint gl_closedir*: pointer gl_readdir*: pointer gl_opendir*: pointer gl_lstat*: pointer gl_stat*: pointer
- glob_t Source Edit
Group {.importc: "struct group", header: "<grp.h>", final, pure.} = object gr_name*: cstring ## The name of the group. gr_passwd*: cstring gr_gid*: Gid ## Numerical group ID. gr_mem*: cstringArray ## Pointer to a null-terminated array of character ## pointers to member names.
- struct group Source Edit
Hostent {.importc: "struct hostent", pure, final, header: "<netdb.h>".} = object h_name*: cstring ## Official name of the host. h_aliases*: cstringArray ## A pointer to an array of pointers to ## alternative host names, terminated by a ## null pointer. h_addrtype*: cint ## Address type. h_length*: cint ## The length, in bytes, of the address. h_addr_list*: cstringArray ## A pointer to an array of pointers to network ## addresses (in network byte order) for the ## host, terminated by a null pointer.
- struct hostent Source Edit
Iconv {.importc: "iconv_t", header: "<iconv.h>".} = pointer
- Identifies the conversion from one codeset to another. Source Edit
In6Addr {.importc: "struct in6_addr", pure, final, header: "<netinet/in.h>".} = object s6_addr*: array[0 .. 15, char]
- struct in6_addr Source Edit
InAddr {.importc: "struct in_addr", pure, final, header: "<netinet/in.h>".} = object s_addr*: InAddrScalar
- struct in_addr Source Edit
IOVec {.importc: "struct iovec", pure, final, header: "<sys/uio.h>".} = object iov_base*: pointer ## Base address of a memory region for input or output. iov_len*: csize_t ## The size of the memory pointed to by iov_base.
- struct iovec Source Edit
Ipc_perm {.importc: "struct ipc_perm", header: "<sys/ipc.h>", final, pure.} = object uid*: Uid ## Owner's user ID. gid*: Gid ## Owner's group ID. cuid*: Uid ## Creator's user ID. cgid*: Gid ## Creator's group ID. mode*: cshort ## Read/write permission.
- struct ipc_perm Source Edit
Itimerspec {.importc: "struct itimerspec", header: "<time.h>", final, pure.} = object it_interval*: Timespec ## Timer period. it_value*: Timespec ## Timer expiration.
- struct itimerspec Source Edit
Lconv {.importc: "struct lconv", header: "<locale.h>", final, pure.} = object decimal_point*: cstring thousands_sep*: cstring grouping*: cstring int_curr_symbol*: cstring currency_symbol*: cstring mon_decimal_point*: cstring mon_thousands_sep*: cstring mon_grouping*: cstring positive_sign*: cstring negative_sign*: cstring int_frac_digits*: char frac_digits*: char p_cs_precedes*: char p_sep_by_space*: char n_cs_precedes*: char n_sep_by_space*: char p_sign_posn*: char n_sign_posn*: char int_p_cs_precedes*: char int_p_sep_by_space*: char int_n_cs_precedes*: char int_n_sep_by_space*: char int_p_sign_posn*: char int_n_sign_posn*: char
- Source Edit
MqAttr {.importc: "struct mq_attr", header: "<mqueue.h>", final, pure.} = object mq_flags*: clong ## Message queue flags. mq_maxmsg*: clong ## Maximum number of messages. mq_msgsize*: clong ## Maximum message size. mq_curmsgs*: clong ## Number of messages currently queued.
- message queue attribute Source Edit
Passwd {.importc: "struct passwd", header: "<pwd.h>", final, pure.} = object pw_name*: cstring ## User's login name. pw_passwd*: cstring pw_uid*: Uid ## Numerical user ID. pw_gid*: Gid ## Numerical group ID. pw_gecos*: cstring pw_dir*: cstring ## Initial working directory. pw_shell*: cstring ## Program to use as shell.
- struct passwd Source Edit
Protoent {.importc: "struct protoent", pure, final, header: "<netdb.h>".} = object p_name*: cstring ## Official name of the protocol. p_aliases*: cstringArray ## A pointer to an array of pointers to ## alternative protocol names, terminated by ## a null pointer. p_proto*: cint ## The protocol number.
- struct protoent Source Edit
Pthread_attr {.importc: "pthread_attr_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_barrier {.importc: "pthread_barrier_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_barrierattr {.importc: "pthread_barrierattr_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_cond {.importc: "pthread_cond_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_condattr {.importc: "pthread_condattr_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_mutex {.importc: "pthread_mutex_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_mutexattr {.importc: "pthread_mutexattr_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_rwlock {.importc: "pthread_rwlock_t", header: "<sys/types.h>", pure, final.} = object
- Source Edit
Pthread_rwlockattr {.importc: "pthread_rwlockattr_t", header: "<sys/types.h>".} = object
- Source Edit
RLimit {.importc: "struct rlimit", header: "<sys/resource.h>", pure, final.} = object rlim_cur*: int rlim_max*: int
- Source Edit
Rusage {.importc: "struct rusage", header: "<sys/resource.h>", bycopy.} = object ru_utime*, ru_stime*: Timeval ru_maxrss*, ru_ixrss*, ru_idrss*, ru_isrss*, ru_minflt*, ru_majflt*, ru_nswap*, ru_inblock*, ru_oublock*, ru_msgsnd*, ru_msgrcv*, ru_nsignals*, ru_nvcsw*, ru_nivcsw*: clong
- Source Edit
Sched_param {.importc: "struct sched_param", header: "<sched.h>", final, pure.} = object sched_priority*: cint
- struct sched_param Source Edit
Servent {.importc: "struct servent", pure, final, header: "<netdb.h>".} = object s_name*: cstring ## Official name of the service. s_aliases*: cstringArray ## A pointer to an array of pointers to ## alternative service names, terminated by ## a null pointer. s_port*: cint ## The port number at which the service ## resides, in network byte order. s_proto*: cstring ## The name of the protocol to use when ## contacting the service.
- struct servent Source Edit
Sig_atomic {.importc: "sig_atomic_t", header: "<signal.h>".} = cint
- Possibly volatile-qualified integer type of an object that can be accessed as an atomic entity, even in the presence of asynchronous interrupts. Source Edit
Sigaction {.importc: "struct sigaction", header: "<signal.h>", final, pure.} = object sa_handler*: proc (x: cint) {.noconv.} ## Pointer to a signal-catching ## function or one of the macros ## SIG_IGN or SIG_DFL. sa_mask*: Sigset ## Set of signals to be blocked during execution of ## the signal handling function. sa_flags*: cint ## Special flags. ## not intended for application use.
- struct sigaction Source Edit
SigEvent {.importc: "struct sigevent", header: "<signal.h>", final, pure.} = object sigev_value*: SigVal ## Signal value. sigev_signo*: cint ## Signal number. sigev_notify*: cint ## Notification type. sigev_notify_function*: proc (x: SigVal) {.noconv.} ## Notification func. sigev_notify_attributes*: ptr Pthread_attr ## Notification attributes.
- struct sigevent Source Edit
SigInfo {.importc: "siginfo_t", header: "<signal.h>", final, pure.} = object si_signo*: cint ## Signal number. si_errno*: cint ## If non-zero, an errno value associated with ## this signal, as defined in <errno.h>. si_code*: cint ## Signal code. si_pid*: Pid ## Sending process ID. si_uid*: Uid ## Real user ID of sending process. si_addr*: pointer ## Address of faulting instruction. si_status*: cint ## Exit value or signal. si_band*: int ## Band event for SIGPOLL. si_value*: SigVal ## Signal value.
- siginfo_t Source Edit
SigStack {.importc: "struct sigstack", header: "<signal.h>", final, pure.} = object ss_onstack*: cint ## Non-zero when signal stack is in use. ss_sp*: pointer ## Signal stack pointer.
- struct sigstack Source Edit
SigVal {.importc: "union sigval", header: "<signal.h>", final, pure.} = object sival_ptr*: pointer ## pointer signal value; ## integer signal value not defined!
- struct sigval Source Edit
SockAddr {.importc: "struct sockaddr", header: "<sys/socket.h>", pure, final.} = object sa_family*: TSa_Family ## Address family. sa_data*: array[14, char] ## Socket address (variable-length data).
- struct sockaddr Source Edit
Sockaddr_in {.importc: "struct sockaddr_in", pure, final, header: "<netinet/in.h>".} = object sin_family*: TSa_Family ## AF_INET. sin_port*: InPort ## Port number. sin_addr*: InAddr ## IP address.
- struct sockaddr_in Source Edit
Sockaddr_in6 {.importc: "struct sockaddr_in6", pure, final, header: "<netinet/in.h>".} = object sin6_family*: TSa_Family ## AF_INET6. sin6_port*: InPort ## Port number. sin6_flowinfo*: uint32 ## IPv6 traffic class and flow information. sin6_addr*: In6Addr ## IPv6 address. sin6_scope_id*: uint32 ## Set of interfaces for a scope.
- struct sockaddr_in6 Source Edit
Sockaddr_storage {.importc: "struct sockaddr_storage", header: "<sys/socket.h>", pure, final.} = object ss_family*: TSa_Family ## Address family.
- struct sockaddr_storage Source Edit
Sockaddr_un {.importc: "struct sockaddr_un", header: "<sys/un.h>", pure, final.} = object sun_family*: TSa_Family ## Address family. sun_path*: array[108, char] ## Socket path
- struct sockaddr_un Source Edit
Stack {.importc: "stack_t", header: "<signal.h>", final, pure.} = object ss_sp*: pointer ## Stack base or pointer. ss_size*: int ## Stack size. ss_flags*: cint ## Flags.
- stack_t Source Edit
Stat {.importc: "struct stat", header: "<sys/stat.h>", final, pure.} = object st_dev*: Dev ## Device ID of device containing file. st_ino*: Ino ## File serial number. st_nlink*: Nlink ## Number of hard links to the file. st_mode*: Mode ## Mode of file (see below). st_uid*: Uid ## User ID of file. st_gid*: Gid ## Group ID of file. st_rdev*: Dev ## Device ID (if file is character or block special). st_size*: Off ## For regular files, the file size in bytes. ## For symbolic links, the length in bytes of the ## pathname contained in the symbolic link. ## For a shared memory object, the length in bytes. ## For a typed memory object, the length in bytes. ## For other file types, the use of this field is ## unspecified. st_blksize*: Blksize ## A file system-specific preferred I/O block size ## for this object. In some file system types, this ## may vary from file to file. st_blocks*: Blkcnt ## Number of blocks allocated for this object. st_atim*: Timespec ## Time of last access. st_mtim*: Timespec ## Time of last data modification. st_ctim*: Timespec ## Time of last status change.
- struct stat Source Edit
Statvfs {.importc: "struct statvfs", header: "<sys/statvfs.h>", final, pure.} = object f_bsize*: culong ## File system block size. f_frsize*: culong ## Fundamental file system block size. f_blocks*: Fsblkcnt ## Total number of blocks on file system ## in units of f_frsize. f_bfree*: Fsblkcnt ## Total number of free blocks. f_bavail*: Fsblkcnt ## Number of free blocks available to ## non-privileged process. f_files*: Fsfilcnt ## Total number of file serial numbers. f_ffree*: Fsfilcnt ## Total number of free file serial numbers. f_favail*: Fsfilcnt ## Number of file serial numbers available to ## non-privileged process. f_fsid*: culong ## File system ID. f_flag*: culong ## Bit mask of f_flag values. f_namemax*: culong ## Maximum filename length.
- struct statvfs Source Edit
Taiocb {.importc: "struct aiocb", header: "<aio.h>", final, pure.} = object aio_fildes*: cint ## File descriptor. aio_lio_opcode*: cint ## Operation to be performed. aio_reqprio*: cint ## Request priority offset. aio_buf*: pointer ## Location of buffer. aio_nbytes*: csize_t ## Length of transfer. aio_sigevent*: SigEvent ## Signal number and value. aio_offset*: Off ## File offset.
- struct aiocb Source Edit
Tcmsghdr {.importc: "struct cmsghdr", pure, final, header: "<sys/socket.h>".} = object cmsg_len*: csize_t ## Data byte count, including the cmsghdr. cmsg_level*: cint ## Originating protocol. cmsg_type*: cint ## Protocol-specific type.
- struct cmsghdr Source Edit
Tflock {.importc: "struct flock", final, pure, header: "<fcntl.h>".} = object l_type*: cshort ## Type of lock; F_RDLCK, F_WRLCK, F_UNLCK. l_whence*: cshort ## Flag for starting offset. l_start*: Off ## Relative offset in bytes. l_len*: Off ## Size; if 0 then until EOF. l_pid*: Pid ## Process ID of the process holding the lock; ## returned with F_GETLK.
- flock type Source Edit
Tif_nameindex {.importc: "struct if_nameindex", final, pure, header: "<net/if.h>".} = object if_index*: cuint ## Numeric index of the interface. if_name*: cstring ## Null-terminated name of the interface.
- struct if_nameindex Source Edit
Timespec {.importc: "struct timespec", header: "<time.h>", final, pure.} = object tv_sec*: Time ## Seconds. tv_nsec*: clong ## Nanoseconds.
- struct timespec Source Edit
Timeval {.importc: "struct timeval", header: "<sys/select.h>", final, pure.} = object tv_sec*: Time ## Seconds. tv_usec*: Suseconds ## Microseconds.
- struct timeval Source Edit
Tipv6_mreq {.importc: "struct ipv6_mreq", pure, final, header: "<netinet/in.h>".} = object ipv6mr_multiaddr*: In6Addr ## IPv6 multicast address. ipv6mr_interface*: cuint ## Interface index.
- struct ipv6_mreq Source Edit
TLinger {.importc: "struct linger", pure, final, header: "<sys/socket.h>".} = object l_onoff*: cint ## Indicates whether linger option is enabled. l_linger*: cint ## Linger time, in seconds.
- struct linger Source Edit
Tm {.importc: "struct tm", header: "<time.h>", final, pure.} = object tm_sec*: cint ## Seconds [0,60]. tm_min*: cint ## Minutes [0,59]. tm_hour*: cint ## Hour [0,23]. tm_mday*: cint ## Day of month [1,31]. tm_mon*: cint ## Month of year [0,11]. tm_year*: cint ## Years since 1900. tm_wday*: cint ## Day of week [0,6] (Sunday =0). tm_yday*: cint ## Day of year [0,365]. tm_isdst*: cint ## Daylight Savings flag. tm_gmtoff*: clong tm_zone*: cstring
- struct tm Source Edit
Tmsghdr {.importc: "struct msghdr", pure, final, header: "<sys/socket.h>".} = object msg_name*: pointer ## Optional address. msg_namelen*: SockLen ## Size of address. msg_iov*: ptr IOVec ## Scatter/gather array. msg_iovlen*: csize_t ## Members in msg_iov. msg_control*: pointer ## Ancillary data; see below. msg_controllen*: csize_t ## Ancillary data buffer len. msg_flags*: cint ## Flags on received message.
- struct msghdr Source Edit
Tnetent {.importc: "struct netent", pure, final, header: "<netdb.h>".} = object n_name*: cstring ## Official, fully-qualified (including the ## domain) name of the host. n_aliases*: cstringArray ## A pointer to an array of pointers to ## alternative network names, terminated by a ## null pointer. n_addrtype*: cint ## The address type of the network. n_net*: uint32 ## The network number, in host byte order.
- struct netent Source Edit
TPollfd {.importc: "struct pollfd", pure, final, header: "<poll.h>".} = object fd*: cint ## The following descriptor being polled. events*: cshort ## The input event flags (see below). revents*: cshort ## The output event flags (see below).
- struct pollfd Source Edit
Tposix_spawn_file_actions {.importc: "posix_spawn_file_actions_t", header: "<spawn.h>", final, pure.} = object
- Source Edit
Tposix_spawnattr {.importc: "posix_spawnattr_t", header: "<spawn.h>", final, pure.} = object
- Source Edit
Ucontext {.importc: "ucontext_t", header: "<ucontext.h>", final, pure.} = object uc_link*: ptr Ucontext ## Pointer to the context that is resumed ## when this context returns. uc_stack*: Stack ## The stack used by this context. uc_mcontext*: Mcontext ## A machine-specific representation of the saved ## context. uc_sigmask*: Sigset ## The set of signals that are blocked when this ## context is active.
- ucontext_t Source Edit
Utsname {.importc: "struct utsname", header: "<sys/utsname.h>", final, pure.} = object sysname*, ## Name of this implementation of the operating system. nodename*, ## Name of this node within the communications ## network to which this node is attached, if any. release*, ## Current release level of this implementation. version*, ## Current version level of this release. machine*, ## Name of the hardware type on which the ## system is running. domainname*: array[65, char]
- struct utsname Source Edit
Consts
StatHasNanoseconds = true
- Boolean flag that indicates if the system supports nanosecond time resolution in the fields of Stat. Note that the nanosecond based fields (Stat.st_atim, Stat.st_mtim and Stat.st_ctim) can be accessed without checking this flag, because this module defines fallback procs when they are not available. Source Edit
Procs
proc `==`(x, y: SocketHandle): bool {.borrow, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc accept(a1: SocketHandle; a2: ptr SockAddr; a3: ptr SockLen): SocketHandle {. importc, header: "<sys/socket.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc accept4(a1: SocketHandle; a2: ptr SockAddr; a3: ptr SockLen; flags: cint): SocketHandle {. importc, header: "<sys/socket.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc close(a1: cint | SocketHandle): cint {.importc, header: "<unistd.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc execv(a1: cstring; a2: cstringArray): cint {.importc, header: "<unistd.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc execve(a1: cstring; a2, a3: cstringArray): cint {.importc, header: "<unistd.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc execvp(a1: cstring; a2: cstringArray): cint {.importc, header: "<unistd.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc execvpe(a1: cstring; a2: cstringArray; a3: cstringArray): cint {.importc, header: "<unistd.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc FD_SET(a1: cint | SocketHandle; a2: var TFdSet) {.importc: "FD_SET", header: "<sys/select.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc if_freenameindex(a1: ptr Tif_nameindex) {.importc, header: "<net/if.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc if_nameindex(): ptr Tif_nameindex {.importc, header: "<net/if.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc ioctl(f: FileHandle; device: uint): int {.importc: "ioctl", header: "<sys/ioctl.h>", varargs, ...tags: [WriteIOEffect], raises: [], forbids: [].}
- A system call for device-specific input/output operations and other operations which cannot be expressed by regular system calls Source Edit
proc listen(a1: SocketHandle; a2: cint): cint {.importc, header: "<sys/socket.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
- Source Edit
proc mkstemp(tmpl: cstring): cint {.importc, header: "<stdlib.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
-
Creates a unique temporary file.Warning: The tmpl argument is written to by mkstemp and thus can't be a string literal. If in doubt make a copy of the cstring before passing it in.Source Edit
proc mkstemps(tmpl: cstring; suffixlen: int): cint {.importc, header: "<stdlib.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
-
Creates a unique temporary file.Warning: The tmpl argument is written to by mkstemps and thus can't be a string literal. If in doubt make a copy of the cstring before passing it in.Source Edit
proc posix_spawn(a1: var Pid; a2: cstring; a3: var Tposix_spawn_file_actions; a4: var Tposix_spawnattr; a5, a6: cstringArray): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawn_file_actions_addclose(a1: var Tposix_spawn_file_actions; a2: cint): cint {.importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawn_file_actions_adddup2(a1: var Tposix_spawn_file_actions; a2, a3: cint): cint {.importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawn_file_actions_destroy(a1: var Tposix_spawn_file_actions): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawn_file_actions_init(a1: var Tposix_spawn_file_actions): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_destroy(a1: var Tposix_spawnattr): cint {.importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getflags(a1: var Tposix_spawnattr; a2: var cshort): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getpgroup(a1: var Tposix_spawnattr; a2: var Pid): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getschedparam(a1: var Tposix_spawnattr; a2: var Sched_param): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getschedpolicy(a1: var Tposix_spawnattr; a2: var cint): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getsigdefault(a1: var Tposix_spawnattr; a2: var Sigset): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_getsigmask(a1: var Tposix_spawnattr; a2: var Sigset): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_init(a1: var Tposix_spawnattr): cint {.importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setflags(a1: var Tposix_spawnattr; a2: cint): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setpgroup(a1: var Tposix_spawnattr; a2: Pid): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setschedparam(a1: var Tposix_spawnattr; a2: var Sched_param): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setschedpolicy(a1: var Tposix_spawnattr; a2: cint): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setsigdefault(a1: var Tposix_spawnattr; a2: var Sigset): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnattr_setsigmask(a1: var Tposix_spawnattr; a2: var Sigset): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc posix_spawnp(a1: var Pid; a2: cstring; a3: var Tposix_spawn_file_actions; a4: var Tposix_spawnattr; a5, a6: cstringArray): cint {. importc, header: "<spawn.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_destroy(a1: ptr Pthread_attr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getdetachstate(a1: ptr Pthread_attr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getguardsize(a1: ptr Pthread_attr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getinheritsched(a1: ptr Pthread_attr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getschedparam(a1: ptr Pthread_attr; a2: ptr Sched_param): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getschedpolicy(a1: ptr Pthread_attr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getscope(a1: ptr Pthread_attr; a2: var cint): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getstackaddr(a1: ptr Pthread_attr; a2: var pointer): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_getstacksize(a1: ptr Pthread_attr; a2: var int): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_init(a1: ptr Pthread_attr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setdetachstate(a1: ptr Pthread_attr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setguardsize(a1: ptr Pthread_attr; a2: int): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setinheritsched(a1: ptr Pthread_attr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setschedparam(a1: ptr Pthread_attr; a2: ptr Sched_param): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setschedpolicy(a1: ptr Pthread_attr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setscope(a1: ptr Pthread_attr; a2: cint): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setstackaddr(a1: ptr Pthread_attr; a2: pointer): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_attr_setstacksize(a1: ptr Pthread_attr; a2: int): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_barrier_destroy(a1: ptr Pthread_barrier): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_barrier_init(a1: ptr Pthread_barrier; a2: ptr Pthread_barrierattr; a3: cint): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_barrier_wait(a1: ptr Pthread_barrier): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_barrierattr_destroy(a1: ptr Pthread_barrierattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_barrierattr_init(a1: ptr Pthread_barrierattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_broadcast(a1: ptr Pthread_cond): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_destroy(a1: ptr Pthread_cond): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_init(a1: ptr Pthread_cond; a2: ptr Pthread_condattr): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_signal(a1: ptr Pthread_cond): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_timedwait(a1: ptr Pthread_cond; a2: ptr Pthread_mutex; a3: ptr Timespec): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_cond_wait(a1: ptr Pthread_cond; a2: ptr Pthread_mutex): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_condattr_destroy(a1: ptr Pthread_condattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_condattr_getclock(a1: ptr Pthread_condattr; a2: var ClockId): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_condattr_init(a1: ptr Pthread_condattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_condattr_setclock(a1: ptr Pthread_condattr; a2: ClockId): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_getspecific(a1: Pthread_key): pointer {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_key_create(a1: ptr Pthread_key; a2: proc (x: pointer) {.noconv.}): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_key_delete(a1: Pthread_key): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_destroy(a1: ptr Pthread_mutex): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_getprioceiling(a1: ptr Pthread_mutex; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_init(a1: ptr Pthread_mutex; a2: ptr Pthread_mutexattr): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_lock(a1: ptr Pthread_mutex): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_timedlock(a1: ptr Pthread_mutex; a2: ptr Timespec): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_trylock(a1: ptr Pthread_mutex): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutex_unlock(a1: ptr Pthread_mutex): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_destroy(a1: ptr Pthread_mutexattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_getprioceiling(a1: ptr Pthread_mutexattr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_getprotocol(a1: ptr Pthread_mutexattr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_gettype(a1: ptr Pthread_mutexattr; a2: var cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_init(a1: ptr Pthread_mutexattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_setprioceiling(a1: ptr Pthread_mutexattr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_setprotocol(a1: ptr Pthread_mutexattr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_mutexattr_settype(a1: ptr Pthread_mutexattr; a2: cint): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_once(a1: ptr Pthread_once; a2: proc () {.noconv.}): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_destroy(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_init(a1: ptr Pthread_rwlock; a2: ptr Pthread_rwlockattr): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_rdlock(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_timedrdlock(a1: ptr Pthread_rwlock; a2: ptr Timespec): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_timedwrlock(a1: ptr Pthread_rwlock; a2: ptr Timespec): cint {. importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_tryrdlock(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_trywrlock(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_unlock(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlock_wrlock(a1: ptr Pthread_rwlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlockattr_destroy(a1: ptr Pthread_rwlockattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_rwlockattr_init(a1: ptr Pthread_rwlockattr): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_setspecific(a1: Pthread_key; a2: pointer): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_spin_destroy(a1: ptr Pthread_spinlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_spin_init(a1: ptr Pthread_spinlock; a2: cint): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_spin_lock(a1: ptr Pthread_spinlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_spin_trylock(a1: ptr Pthread_spinlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc pthread_spin_unlock(a1: ptr Pthread_spinlock): cint {.importc, header: "<pthread.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc sched_getparam(a1: Pid; a2: var Sched_param): cint {.importc, header: "<sched.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc sched_setparam(a1: Pid; a2: var Sched_param): cint {.importc, header: "<sched.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc shutdown(a1: SocketHandle; a2: cint): cint {.importc, header: "<sys/socket.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc socket(a1, a2, a3: cint): SocketHandle {.importc, header: "<sys/socket.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc timer_gettime(a1: Timer; a2: var Itimerspec): cint {.importc, header: "<time.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc timer_settime(a1: Timer; a2: cint; a3: var Itimerspec; a4: var Itimerspec): cint {. importc, header: "<time.h>", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc utimes(path: cstring; times: ptr array[2, Timeval]): int {. importc: "utimes", header: "<sys/time.h>", sideEffect, ...raises: [], tags: [], forbids: [].}
-
Sets file access and modification times.
Pass the filename and an array of times to set the access and modification times respectively. If you pass nil as the array both attributes will be set to the current time.
Returns zero on success.
For more information read http://www.unix.com/man-page/posix/3/utimes/.
Source Edit
Templates
template onSignal(signals: varargs[cint]; body: untyped)
-
Setup code to be executed when Unix signals are received. The currently handled signal is injected as sig into the calling scope.
Example:
from std/posix import SIGINT, SIGTERM, onSignal onSignal(SIGINT, SIGTERM): echo "bye from signal ", sig
Source Edit