通用作業系統服務
****************

此章節所描述的模組 (module) 提供了作業系統特性的使用介面，例如檔案與時
鐘，（幾乎）在所有作業系統上皆能使用。這些介面通常是參考 Unix 或 C 的
介面來實作，不過在其他大多數系統上也能使用。以下為概述：

* "os" --- 各種作業系統介面

  * "error"

  * "name"

  * File Names, Command Line Arguments, and Environment Variables

  * Python UTF-8 模式

  * 行程參數

    * "ctermid()"

    * "environ"

    * "environb"

    * "fsencode()"

    * "fsdecode()"

    * "fspath()"

    * "PathLike"

      * "__fspath__()"

    * "getenv()"

    * "getenvb()"

    * "get_exec_path()"

    * "getegid()"

    * "geteuid()"

    * "getgid()"

    * "getgrouplist()"

    * "getgroups()"

    * "getlogin()"

    * "getpgid()"

    * "getpgrp()"

    * "getpid()"

    * "getppid()"

    * "getpriority()"

    * "PRIO_PROCESS"

    * "PRIO_PGRP"

    * "PRIO_USER"

    * "PRIO_DARWIN_THREAD"

    * "PRIO_DARWIN_PROCESS"

    * "PRIO_DARWIN_BG"

    * "PRIO_DARWIN_NONUI"

    * "getresuid()"

    * "getresgid()"

    * "getuid()"

    * "initgroups()"

    * "putenv()"

    * "setegid()"

    * "seteuid()"

    * "setgid()"

    * "setgroups()"

    * "setns()"

    * "setpgrp()"

    * "setpgid()"

    * "setpriority()"

    * "setregid()"

    * "setresgid()"

    * "setresuid()"

    * "setreuid()"

    * "getsid()"

    * "setsid()"

    * "setuid()"

    * "strerror()"

    * "supports_bytes_environ"

    * "umask()"

    * "uname()"

    * "unsetenv()"

    * "unshare()"

    * "CLONE_FILES"

    * "CLONE_FS"

    * "CLONE_NEWCGROUP"

    * "CLONE_NEWIPC"

    * "CLONE_NEWNET"

    * "CLONE_NEWNS"

    * "CLONE_NEWPID"

    * "CLONE_NEWTIME"

    * "CLONE_NEWUSER"

    * "CLONE_NEWUTS"

    * "CLONE_SIGHAND"

    * "CLONE_SYSVSEM"

    * "CLONE_THREAD"

    * "CLONE_VM"

  * File Object Creation

    * "fdopen()"

  * File Descriptor Operations

    * "close()"

    * "closerange()"

    * "copy_file_range()"

    * "device_encoding()"

    * "dup()"

    * "dup2()"

    * "fchmod()"

    * "fchown()"

    * "fdatasync()"

    * "fpathconf()"

    * "fstat()"

    * "fstatvfs()"

    * "fsync()"

    * "ftruncate()"

    * "get_blocking()"

    * "grantpt()"

    * "isatty()"

    * "lockf()"

    * "F_LOCK"

    * "F_TLOCK"

    * "F_ULOCK"

    * "F_TEST"

    * "login_tty()"

    * "lseek()"

    * "SEEK_SET"

    * "SEEK_CUR"

    * "SEEK_END"

    * "SEEK_HOLE"

    * "SEEK_DATA"

    * "open()"

    * "O_RDONLY"

    * "O_WRONLY"

    * "O_RDWR"

    * "O_APPEND"

    * "O_CREAT"

    * "O_EXCL"

    * "O_TRUNC"

    * "O_DSYNC"

    * "O_RSYNC"

    * "O_SYNC"

    * "O_NDELAY"

    * "O_NONBLOCK"

    * "O_NOCTTY"

    * "O_CLOEXEC"

    * "O_BINARY"

    * "O_NOINHERIT"

    * "O_SHORT_LIVED"

    * "O_TEMPORARY"

    * "O_RANDOM"

    * "O_SEQUENTIAL"

    * "O_TEXT"

    * "O_EVTONLY"

    * "O_FSYNC"

    * "O_SYMLINK"

    * "O_NOFOLLOW_ANY"

    * "O_ASYNC"

    * "O_DIRECT"

    * "O_DIRECTORY"

    * "O_NOFOLLOW"

    * "O_NOATIME"

    * "O_PATH"

    * "O_TMPFILE"

    * "O_SHLOCK"

    * "O_EXLOCK"

    * "openpty()"

    * "pipe()"

    * "pipe2()"

    * "posix_fallocate()"

    * "posix_fadvise()"

    * "POSIX_FADV_NORMAL"

    * "POSIX_FADV_SEQUENTIAL"

    * "POSIX_FADV_RANDOM"

    * "POSIX_FADV_NOREUSE"

    * "POSIX_FADV_WILLNEED"

    * "POSIX_FADV_DONTNEED"

    * "pread()"

    * "posix_openpt()"

    * "preadv()"

    * "RWF_NOWAIT"

    * "RWF_HIPRI"

    * "ptsname()"

    * "pwrite()"

    * "pwritev()"

    * "RWF_DSYNC"

    * "RWF_SYNC"

    * "RWF_APPEND"

    * "read()"

    * "sendfile()"

    * "SF_NODISKIO"

    * "SF_MNOWAIT"

    * "SF_SYNC"

    * "SF_NOCACHE"

    * "set_blocking()"

    * "splice()"

    * "SPLICE_F_MOVE"

    * "SPLICE_F_NONBLOCK"

    * "SPLICE_F_MORE"

    * "readv()"

    * "tcgetpgrp()"

    * "tcsetpgrp()"

    * "ttyname()"

    * "unlockpt()"

    * "write()"

    * "writev()"

    * Querying the size of a terminal

      * "get_terminal_size()"

      * "terminal_size"

        * "columns"

        * "lines"

    * Inheritance of File Descriptors

      * "get_inheritable()"

      * "set_inheritable()"

      * "get_handle_inheritable()"

      * "set_handle_inheritable()"

  * Files and Directories

    * "access()"

    * "F_OK"

    * "R_OK"

    * "W_OK"

    * "X_OK"

    * "chdir()"

    * "chflags()"

    * "chmod()"

    * "chown()"

    * "chroot()"

    * "fchdir()"

    * "getcwd()"

    * "getcwdb()"

    * "lchflags()"

    * "lchmod()"

    * "lchown()"

    * "link()"

    * "listdir()"

    * "listdrives()"

    * "listmounts()"

    * "listvolumes()"

    * "lstat()"

    * "mkdir()"

    * "makedirs()"

    * "mkfifo()"

    * "mknod()"

    * "major()"

    * "minor()"

    * "makedev()"

    * "pathconf()"

    * "pathconf_names"

    * "readlink()"

    * "remove()"

    * "removedirs()"

    * "rename()"

    * "renames()"

    * "replace()"

    * "rmdir()"

    * "scandir()"

      * "close()"

    * "DirEntry"

      * "name"

      * "path"

      * "inode()"

      * "is_dir()"

      * "is_file()"

      * "is_symlink()"

      * "is_junction()"

      * "stat()"

    * "stat()"

    * "stat_result"

      * "st_mode"

      * "st_ino"

      * "st_dev"

      * "st_nlink"

      * "st_uid"

      * "st_gid"

      * "st_size"

      * "st_atime"

      * "st_mtime"

      * "st_ctime"

      * "st_atime_ns"

      * "st_mtime_ns"

      * "st_ctime_ns"

      * "st_birthtime"

      * "st_birthtime_ns"

      * "st_blocks"

      * "st_blksize"

      * "st_rdev"

      * "st_flags"

      * "st_gen"

      * "st_fstype"

      * "st_rsize"

      * "st_creator"

      * "st_type"

      * "st_file_attributes"

      * "st_reparse_tag"

    * "statvfs()"

    * "supports_dir_fd"

    * "supports_effective_ids"

    * "supports_fd"

    * "supports_follow_symlinks"

    * "symlink()"

    * "sync()"

    * "truncate()"

    * "unlink()"

    * "utime()"

    * "walk()"

    * "fwalk()"

    * "memfd_create()"

    * "MFD_CLOEXEC"

    * "MFD_ALLOW_SEALING"

    * "MFD_HUGETLB"

    * "MFD_HUGE_SHIFT"

    * "MFD_HUGE_MASK"

    * "MFD_HUGE_64KB"

    * "MFD_HUGE_512KB"

    * "MFD_HUGE_1MB"

    * "MFD_HUGE_2MB"

    * "MFD_HUGE_8MB"

    * "MFD_HUGE_16MB"

    * "MFD_HUGE_32MB"

    * "MFD_HUGE_256MB"

    * "MFD_HUGE_512MB"

    * "MFD_HUGE_1GB"

    * "MFD_HUGE_2GB"

    * "MFD_HUGE_16GB"

    * "eventfd()"

    * "eventfd_read()"

    * "eventfd_write()"

    * "EFD_CLOEXEC"

    * "EFD_NONBLOCK"

    * "EFD_SEMAPHORE"

    * Timer File Descriptors

      * "timerfd_create()"

      * "timerfd_settime()"

      * "timerfd_settime_ns()"

      * "timerfd_gettime()"

      * "timerfd_gettime_ns()"

      * "TFD_NONBLOCK"

      * "TFD_CLOEXEC"

      * "TFD_TIMER_ABSTIME"

      * "TFD_TIMER_CANCEL_ON_SET"

    * Linux extended attributes

      * "getxattr()"

      * "listxattr()"

      * "removexattr()"

      * "setxattr()"

      * "XATTR_SIZE_MAX"

      * "XATTR_CREATE"

      * "XATTR_REPLACE"

  * 行程管理

    * "abort()"

    * "add_dll_directory()"

    * "execl()"

    * "execle()"

    * "execlp()"

    * "execlpe()"

    * "execv()"

    * "execve()"

    * "execvp()"

    * "execvpe()"

    * "_exit()"

    * "EX_OK"

    * "EX_USAGE"

    * "EX_DATAERR"

    * "EX_NOINPUT"

    * "EX_NOUSER"

    * "EX_NOHOST"

    * "EX_UNAVAILABLE"

    * "EX_SOFTWARE"

    * "EX_OSERR"

    * "EX_OSFILE"

    * "EX_CANTCREAT"

    * "EX_IOERR"

    * "EX_TEMPFAIL"

    * "EX_PROTOCOL"

    * "EX_NOPERM"

    * "EX_CONFIG"

    * "EX_NOTFOUND"

    * "fork()"

    * "forkpty()"

    * "kill()"

    * "killpg()"

    * "nice()"

    * "pidfd_open()"

      * "PIDFD_NONBLOCK"

    * "plock()"

    * "popen()"

    * "posix_spawn()"

      * "POSIX_SPAWN_OPEN"

      * "POSIX_SPAWN_CLOSE"

      * "POSIX_SPAWN_DUP2"

      * "POSIX_SPAWN_CLOSEFROM"

    * "posix_spawnp()"

    * "register_at_fork()"

    * "spawnl()"

    * "spawnle()"

    * "spawnlp()"

    * "spawnlpe()"

    * "spawnv()"

    * "spawnve()"

    * "spawnvp()"

    * "spawnvpe()"

    * "P_NOWAIT"

    * "P_NOWAITO"

    * "P_WAIT"

    * "P_DETACH"

    * "P_OVERLAY"

    * "startfile()"

    * "system()"

    * "times()"

    * "wait()"

    * "waitid()"

    * "waitpid()"

    * "wait3()"

    * "wait4()"

    * "P_PID"

    * "P_PGID"

    * "P_ALL"

    * "P_PIDFD"

    * "WCONTINUED"

    * "WEXITED"

    * "WSTOPPED"

    * "WUNTRACED"

    * "WNOHANG"

    * "WNOWAIT"

    * "CLD_EXITED"

    * "CLD_KILLED"

    * "CLD_DUMPED"

    * "CLD_TRAPPED"

    * "CLD_STOPPED"

    * "CLD_CONTINUED"

    * "waitstatus_to_exitcode()"

    * "WCOREDUMP()"

    * "WIFCONTINUED()"

    * "WIFSTOPPED()"

    * "WIFSIGNALED()"

    * "WIFEXITED()"

    * "WEXITSTATUS()"

    * "WSTOPSIG()"

    * "WTERMSIG()"

  * Interface to the scheduler

    * "SCHED_OTHER"

    * "SCHED_BATCH"

    * "SCHED_IDLE"

    * "SCHED_SPORADIC"

    * "SCHED_FIFO"

    * "SCHED_RR"

    * "SCHED_RESET_ON_FORK"

    * "sched_param"

      * "sched_priority"

    * "sched_get_priority_min()"

    * "sched_get_priority_max()"

    * "sched_setscheduler()"

    * "sched_getscheduler()"

    * "sched_setparam()"

    * "sched_getparam()"

    * "sched_rr_get_interval()"

    * "sched_yield()"

    * "sched_setaffinity()"

    * "sched_getaffinity()"

  * Miscellaneous System Information

    * "confstr()"

    * "confstr_names"

    * "cpu_count()"

    * "getloadavg()"

    * "process_cpu_count()"

    * "sysconf()"

    * "sysconf_names"

    * "curdir"

    * "pardir"

    * "sep"

    * "altsep"

    * "extsep"

    * "pathsep"

    * "defpath"

    * "linesep"

    * "devnull"

    * "RTLD_LAZY"

    * "RTLD_NOW"

    * "RTLD_GLOBAL"

    * "RTLD_LOCAL"

    * "RTLD_NODELETE"

    * "RTLD_NOLOAD"

    * "RTLD_DEEPBIND"

  * Random numbers

    * "getrandom()"

    * "urandom()"

    * "GRND_NONBLOCK"

    * "GRND_RANDOM"

* "io" — 處理資料串流的核心工具

  * 總覽

    * 文字 I/O

    * 二進位 (Binary) I/O

    * 原始 (Raw) I/O

  * 文字編碼

    * 選擇性加入的編碼警告

  * 高階模組介面

    * "DEFAULT_BUFFER_SIZE"

    * "open()"

    * "open_code()"

    * "text_encoding()"

    * "BlockingIOError"

    * "UnsupportedOperation"

  * 類別階層

    * I/O 基礎類別

      * "IOBase"

        * "close()"

        * "closed"

        * "fileno()"

        * "flush()"

        * "isatty()"

        * "readable()"

        * "readline()"

        * "readlines()"

        * "seek()"

        * "seekable()"

        * "tell()"

        * "truncate()"

        * "writable()"

        * "writelines()"

        * "__del__()"

      * "RawIOBase"

        * "read()"

        * "readall()"

        * "readinto()"

        * "write()"

      * "BufferedIOBase"

        * "raw"

        * "detach()"

        * "read()"

        * "read1()"

        * "readinto()"

        * "readinto1()"

        * "write()"

    * 原始檔案 I/O

      * "FileIO"

        * "mode"

        * "name"

    * Buffered Streams

      * "BytesIO"

        * "getbuffer()"

        * "getvalue()"

        * "read1()"

        * "readinto1()"

      * "BufferedReader"

        * "peek()"

        * "read()"

        * "read1()"

      * "BufferedWriter"

        * "flush()"

        * "write()"

      * "BufferedRandom"

      * "BufferedRWPair"

    * 文字 I/O

      * "TextIOBase"

        * "encoding"

        * "errors"

        * "newlines"

        * "buffer"

        * "detach()"

        * "read()"

        * "readline()"

        * "seek()"

        * "tell()"

        * "write()"

      * "TextIOWrapper"

        * "line_buffering"

        * "write_through"

        * "reconfigure()"

        * "seek()"

        * "tell()"

      * "StringIO"

        * "getvalue()"

      * "IncrementalNewlineDecoder"

  * Performance

    * 二進位 (Binary) I/O

    * 文字 I/O

    * Multi-threading

    * Reentrancy

* "time" --- 時間存取與轉換

  * 函式

    * "asctime()"

    * "pthread_getcpuclockid()"

    * "clock_getres()"

    * "clock_gettime()"

    * "clock_gettime_ns()"

    * "clock_settime()"

    * "clock_settime_ns()"

    * "ctime()"

    * "get_clock_info()"

    * "gmtime()"

    * "localtime()"

    * "mktime()"

    * "monotonic()"

    * "monotonic_ns()"

    * "perf_counter()"

    * "perf_counter_ns()"

    * "process_time()"

    * "process_time_ns()"

    * "sleep()"

    * "strftime()"

    * "strptime()"

    * "struct_time"

      * "tm_year"

      * "tm_mon"

      * "tm_mday"

      * "tm_hour"

      * "tm_min"

      * "tm_sec"

      * "tm_wday"

      * "tm_yday"

      * "tm_isdst"

      * "tm_zone"

      * "tm_gmtoff"

    * "time()"

    * "time_ns()"

    * "thread_time()"

    * "thread_time_ns()"

    * "tzset()"

  * 時鐘 ID 常數

    * "CLOCK_BOOTTIME"

    * "CLOCK_HIGHRES"

    * "CLOCK_MONOTONIC"

    * "CLOCK_MONOTONIC_RAW"

    * "CLOCK_MONOTONIC_RAW_APPROX"

    * "CLOCK_PROCESS_CPUTIME_ID"

    * "CLOCK_PROF"

    * "CLOCK_TAI"

    * "CLOCK_THREAD_CPUTIME_ID"

    * "CLOCK_UPTIME"

    * "CLOCK_UPTIME_RAW"

    * "CLOCK_UPTIME_RAW_APPROX"

    * "CLOCK_REALTIME"

  * 時區常數

    * "altzone"

    * "daylight"

    * "timezone"

    * "tzname"

* "logging" --- Python 的日誌記錄工具

  * Logger 物件

    * "Logger"

      * "name"

      * "level"

      * "parent"

      * "propagate"

      * "handlers"

      * "disabled"

      * "setLevel()"

      * "isEnabledFor()"

      * "getEffectiveLevel()"

      * "getChild()"

      * "getChildren()"

      * "debug()"

      * "info()"

      * "warning()"

      * "error()"

      * "critical()"

      * "log()"

      * "exception()"

      * "addFilter()"

      * "removeFilter()"

      * "filter()"

      * "addHandler()"

      * "removeHandler()"

      * "findCaller()"

      * "handle()"

      * "makeRecord()"

      * "hasHandlers()"

  * Logging Levels

    * "NOTSET"

    * "DEBUG"

    * "INFO"

    * "WARNING"

    * "ERROR"

    * "CRITICAL"

  * Handler Objects

    * "Handler"

      * "__init__()"

      * "createLock()"

      * "acquire()"

      * "release()"

      * "setLevel()"

      * "setFormatter()"

      * "addFilter()"

      * "removeFilter()"

      * "filter()"

      * "flush()"

      * "close()"

      * "handle()"

      * "handleError()"

      * "format()"

      * "emit()"

  * Formatter Objects

    * "Formatter"

      * "format()"

      * "formatTime()"

      * "formatException()"

      * "formatStack()"

    * "BufferingFormatter"

      * "formatHeader()"

      * "formatFooter()"

      * "format()"

  * Filter Objects

    * "Filter"

      * "filter()"

  * LogRecord 物件

    * "LogRecord"

      * "getMessage()"

  * LogRecord 屬性

  * LoggerAdapter 物件

    * "LoggerAdapter"

      * "process()"

      * "manager"

      * "_log"

  * 執行緒安全

  * 模組層級函式

    * "getLogger()"

    * "getLoggerClass()"

    * "getLogRecordFactory()"

    * "debug()"

    * "info()"

    * "warning()"

    * "error()"

    * "critical()"

    * "exception()"

    * "log()"

    * "disable()"

    * "addLevelName()"

    * "getLevelNamesMapping()"

    * "getLevelName()"

    * "getHandlerByName()"

    * "getHandlerNames()"

    * "makeLogRecord()"

    * "basicConfig()"

    * "shutdown()"

    * "setLoggerClass()"

    * "setLogRecordFactory()"

  * 模組層級屬性

    * "lastResort"

    * "raiseExceptions"

  * Integration with the warnings module

    * "captureWarnings()"

* "logging.config" --- 日誌記錄配置

  * Configuration functions

    * "dictConfig()"

    * "fileConfig()"

    * "listen()"

    * "stopListening()"

  * Security considerations

  * Configuration dictionary schema

    * Dictionary Schema Details

    * Incremental Configuration

    * Object connections

    * User-defined objects

    * Handler configuration order

    * Access to external objects

    * Access to internal objects

    * Import resolution and custom importers

    * Configuring QueueHandler and QueueListener

  * Configuration file format

* "logging.handlers" --- 日誌紀錄處理器

  * StreamHandler

    * "StreamHandler"

      * "emit()"

      * "flush()"

      * "setStream()"

      * "terminator"

  * FileHandler

    * "FileHandler"

      * "close()"

      * "emit()"

  * NullHandler

    * "NullHandler"

      * "emit()"

      * "handle()"

      * "createLock()"

  * WatchedFileHandler

    * "WatchedFileHandler"

      * "reopenIfNeeded()"

      * "emit()"

  * BaseRotatingHandler

    * "BaseRotatingHandler"

      * "namer"

      * "rotator"

      * "rotation_filename()"

      * "rotate()"

  * RotatingFileHandler

    * "RotatingFileHandler"

      * "doRollover()"

      * "emit()"

  * TimedRotatingFileHandler

    * "TimedRotatingFileHandler"

      * "doRollover()"

      * "emit()"

      * "getFilesToDelete()"

  * SocketHandler

    * "SocketHandler"

      * "close()"

      * "emit()"

      * "handleError()"

      * "makeSocket()"

      * "makePickle()"

      * "send()"

      * "createSocket()"

  * DatagramHandler

    * "DatagramHandler"

      * "emit()"

      * "makeSocket()"

      * "send()"

  * SysLogHandler

    * "SysLogHandler"

      * "close()"

      * "createSocket()"

      * "emit()"

      * "encodePriority()"

      * "mapPriority()"

  * NTEventLogHandler

    * "NTEventLogHandler"

      * "close()"

      * "emit()"

      * "getEventCategory()"

      * "getEventType()"

      * "getMessageID()"

  * SMTPHandler

    * "SMTPHandler"

      * "emit()"

      * "getSubject()"

  * MemoryHandler

    * "BufferingHandler"

      * "emit()"

      * "flush()"

      * "shouldFlush()"

    * "MemoryHandler"

      * "close()"

      * "flush()"

      * "setTarget()"

      * "shouldFlush()"

  * HTTPHandler

    * "HTTPHandler"

      * "mapLogRecord()"

      * "emit()"

  * QueueHandler

    * "QueueHandler"

      * "emit()"

      * "prepare()"

      * "enqueue()"

      * "listener"

  * QueueListener

    * "QueueListener"

      * "dequeue()"

      * "prepare()"

      * "handle()"

      * "start()"

      * "stop()"

      * "enqueue_sentinel()"

* "platform" ---  對底層平臺識別資料的存取

  * 跨平台

    * "architecture()"

    * "machine()"

    * "node()"

    * "platform()"

    * "processor()"

    * "python_build()"

    * "python_compiler()"

    * "python_branch()"

    * "python_implementation()"

    * "python_revision()"

    * "python_version()"

    * "python_version_tuple()"

    * "release()"

    * "system()"

    * "system_alias()"

    * "version()"

    * "uname()"

  * Java 平台

    * "java_ver()"

  * Windows 平台

    * "win32_ver()"

    * "win32_edition()"

    * "win32_is_iot()"

  * macOS 平台

    * "mac_ver()"

  * iOS 平台

    * "ios_ver()"

  * Unix 平台

    * "libc_ver()"

  * Linux 平台

    * "freedesktop_os_release()"

  * Android 平台

    * "android_ver()"

* "errno" --- 標準 errno 系統符號

  * "errorcode"

  * "EPERM"

  * "ENOENT"

  * "ESRCH"

  * "EINTR"

  * "EIO"

  * "ENXIO"

  * "E2BIG"

  * "ENOEXEC"

  * "EBADF"

  * "ECHILD"

  * "EAGAIN"

  * "ENOMEM"

  * "EACCES"

  * "EFAULT"

  * "ENOTBLK"

  * "EBUSY"

  * "EEXIST"

  * "EXDEV"

  * "ENODEV"

  * "ENOTDIR"

  * "EISDIR"

  * "EINVAL"

  * "ENFILE"

  * "EMFILE"

  * "ENOTTY"

  * "ETXTBSY"

  * "EFBIG"

  * "ENOSPC"

  * "ESPIPE"

  * "EROFS"

  * "EMLINK"

  * "EPIPE"

  * "EDOM"

  * "ERANGE"

  * "EDEADLK"

  * "ENAMETOOLONG"

  * "ENOLCK"

  * "ENOSYS"

  * "ENOTEMPTY"

  * "ELOOP"

  * "EWOULDBLOCK"

  * "ENOMSG"

  * "EIDRM"

  * "ECHRNG"

  * "EL2NSYNC"

  * "EL3HLT"

  * "EL3RST"

  * "ELNRNG"

  * "EUNATCH"

  * "ENOCSI"

  * "EL2HLT"

  * "EBADE"

  * "EBADR"

  * "EXFULL"

  * "ENOANO"

  * "EBADRQC"

  * "EBADSLT"

  * "EDEADLOCK"

  * "EBFONT"

  * "ENOSTR"

  * "ENODATA"

  * "ETIME"

  * "ENOSR"

  * "ENONET"

  * "ENOPKG"

  * "EREMOTE"

  * "ENOLINK"

  * "EADV"

  * "ESRMNT"

  * "ECOMM"

  * "EPROTO"

  * "EMULTIHOP"

  * "EDOTDOT"

  * "EBADMSG"

  * "EOVERFLOW"

  * "ENOTUNIQ"

  * "EBADFD"

  * "EREMCHG"

  * "ELIBACC"

  * "ELIBBAD"

  * "ELIBSCN"

  * "ELIBMAX"

  * "ELIBEXEC"

  * "EILSEQ"

  * "ERESTART"

  * "ESTRPIPE"

  * "EUSERS"

  * "ENOTSOCK"

  * "EDESTADDRREQ"

  * "EMSGSIZE"

  * "EPROTOTYPE"

  * "ENOPROTOOPT"

  * "EPROTONOSUPPORT"

  * "ESOCKTNOSUPPORT"

  * "EOPNOTSUPP"

  * "ENOTSUP"

  * "EPFNOSUPPORT"

  * "EAFNOSUPPORT"

  * "EADDRINUSE"

  * "EADDRNOTAVAIL"

  * "ENETDOWN"

  * "ENETUNREACH"

  * "ENETRESET"

  * "ECONNABORTED"

  * "ECONNRESET"

  * "ENOBUFS"

  * "EISCONN"

  * "ENOTCONN"

  * "ESHUTDOWN"

  * "ETOOMANYREFS"

  * "ETIMEDOUT"

  * "ECONNREFUSED"

  * "EHOSTDOWN"

  * "EHOSTUNREACH"

  * "EALREADY"

  * "EINPROGRESS"

  * "ESTALE"

  * "EUCLEAN"

  * "ENOTNAM"

  * "ENAVAIL"

  * "EISNAM"

  * "EREMOTEIO"

  * "EDQUOT"

  * "EQFULL"

  * "ENOTCAPABLE"

  * "ECANCELED"

  * "EOWNERDEAD"

  * "ENOTRECOVERABLE"

* "ctypes" --- 用於 Python 的外部函式庫

  * ctypes 教學

    * Loading dynamic link libraries

    * Accessing functions from loaded dlls

    * 呼叫函式

    * Fundamental data types

    * Calling functions, continued

    * Calling variadic functions

    * Calling functions with your own custom data types

    * Specifying the required argument types (function prototypes)

    * Return types

    * Passing pointers (or: passing parameters by reference)

    * Structures and unions

    * Structure/union alignment and byte order

    * Bit fields in structures and unions

    * Arrays

    * Pointers

    * Type conversions

    * Incomplete Types

    * 回呼函式

    * Accessing values exported from dlls

    * Surprises

    * Variable-sized data types

  * ctypes reference

    * Finding shared libraries

    * Loading shared libraries

      * "CDLL"

      * "OleDLL"

      * "WinDLL"

      * "PyDLL"

      * "_handle"

      * "_name"

      * "LibraryLoader"

        * "LoadLibrary()"

    * Foreign functions

      * "_CFuncPtr"

        * "restype"

        * "argtypes"

        * "errcheck"

      * "ArgumentError"

    * Function prototypes

      * "CFUNCTYPE()"

      * "WINFUNCTYPE()"

      * "PYFUNCTYPE()"

    * Utility functions

      * "addressof()"

      * "alignment()"

      * "byref()"

      * "cast()"

      * "create_string_buffer()"

      * "create_unicode_buffer()"

      * "DllCanUnloadNow()"

      * "DllGetClassObject()"

      * "find_library()"

      * "find_msvcrt()"

      * "FormatError()"

      * "GetLastError()"

      * "get_errno()"

      * "get_last_error()"

      * "memmove()"

      * "memset()"

      * "POINTER()"

      * "pointer()"

      * "resize()"

      * "set_errno()"

      * "set_last_error()"

      * "sizeof()"

      * "string_at()"

      * "WinError()"

      * "wstring_at()"

    * Data types

      * "_CData"

        * "from_buffer()"

        * "from_buffer_copy()"

        * "from_address()"

        * "from_param()"

        * "in_dll()"

        * "_b_base_"

        * "_b_needsfree_"

        * "_objects"

    * Fundamental data types

      * "_SimpleCData"

        * "value"

      * "c_byte"

      * "c_char"

      * "c_char_p"

      * "c_double"

      * "c_longdouble"

      * "c_float"

      * "c_int"

      * "c_int8"

      * "c_int16"

      * "c_int32"

      * "c_int64"

      * "c_long"

      * "c_longlong"

      * "c_short"

      * "c_size_t"

      * "c_ssize_t"

      * "c_time_t"

      * "c_ubyte"

      * "c_uint"

      * "c_uint8"

      * "c_uint16"

      * "c_uint32"

      * "c_uint64"

      * "c_ulong"

      * "c_ulonglong"

      * "c_ushort"

      * "c_void_p"

      * "c_wchar"

      * "c_wchar_p"

      * "c_bool"

      * "HRESULT"

      * "py_object"

    * Structured data types

      * "Union"

      * "BigEndianUnion"

      * "LittleEndianUnion"

      * "BigEndianStructure"

      * "LittleEndianStructure"

      * "Structure"

        * "_fields_"

        * "_pack_"

        * "_align_"

        * "_anonymous_"

    * Arrays and pointers

      * "Array"

        * "_length_"

        * "_type_"

      * "ARRAY()"

      * "_Pointer"

        * "_type_"

        * "contents"
