std/posix_utils (original) (raw)

Source Edit

A set of helpers for the POSIX module. Raw interfaces are in the other posix*.nim files.

Procs

proc fsync(fd: int) {....raises: [OSError], tags: [], forbids: [].}

synchronize a file's buffer cache to the storage deviceSource Edit

proc memoryLock(a1: pointer; a2: int) {....raises: [OSError], tags: [], forbids: [].}

Locks pages starting from a1 for a1 bytes and prevent them from being swapped.Source Edit

proc memoryLockAll(flags: int) {....raises: [OSError], tags: [], forbids: [].}

Locks all memory for the running process to prevent swapping.

example:

memoryLockAll(MCL_CURRENT or MCL_FUTURE)

Source Edit

proc memoryUnlock(a1: pointer; a2: int) {....raises: [OSError], tags: [], forbids: [].}

Unlock pages starting from a1 for a1 bytes and allow them to be swapped.Source Edit

proc memoryUnlockAll() {....raises: [OSError], tags: [], forbids: [].}

Unlocks all memory for the running process to allow swapping.Source Edit

proc mkdtemp(prefix: string): string {....raises: [OSError], tags: [], forbids: [].}

Creates a unique temporary directory from a prefix string. Adds a six chars suffix. The directory is created with permissions 0700. Returns the directory name.Source Edit

proc mkstemp(prefix: string; suffix = ""): (string, File) {....raises: [OSError], tags: [], forbids: [].}

Creates a unique temporary file from a prefix string. A six-character string will be added. If suffix is provided it will be added to the string The file is created with perms 0600. Returns the filename and a file opened in r/w mode.Source Edit

proc osReleaseFile(): Config {....raises: [IOError, OSError, Exception, ValueError, KeyError], tags: [ReadDirEffect, ReadIOEffect, WriteIOEffect, RootEffect], forbids: [].}

Gets system identification from os-release file and returns it as a parsecfg.Config. You also need to import the parsecfg module to gain access to this object. The os-release file is an official Freedesktop.org open standard. Available in Linux and BSD distributions, except Android and Android-based Linux. os-release file is not available on Windows and OS X by design.

Example:

import std/parsecfg when defined(linux): let data = osReleaseFile() echo "OS name: ", data.getSectionValue("", "NAME")

Source Edit

proc sendSignal(pid: Pid; signal: int) {....raises: [OSError], tags: [], forbids: [].}

Sends a signal to a running process by calling kill. Raise exception in case of failure e.g. process not running.Source Edit

proc stat(path: string): Stat {....raises: [OSError], tags: [], forbids: [].}

Returns file status in a Stat structureSource Edit

proc uname(): Uname {....raises: [OSError], tags: [], forbids: [].}

Provides system information in a Uname struct with sysname, nodename, release, version and machine attributes.Source Edit