sysconf( )函數參數說明

來源:互聯網
上載者:User

瞭解系統的線程資源限制是使得應用程式恰當地管理它們的關鍵。前面已經討論了利用系統資源的樣本。當設定線程的棧大小時,最小值為PTHREAD_MIN_STACK。棧大小不應當低於由pthread_attr_getstacksize( )返回的預設棧大小的最小值。每個進程的最大線程數決定了能夠為每個進程建立的worker線程的上限。函數sysconf( )用於返回可配置系統限制或選項的當前值。系統中定義了同線程、進程和訊號量相關的多個變數和常量。列出了部分變數和常量。

變 量

名字值(Name Value)

描 述

_SC_THREADS

_POSIX_THREADS

支援線程

_SC_THREAD_ATTR_STACKADDR

_POSIX_THREAD_ATTR_STACKADDR

支援線程棧地址屬性

_SC_THREAD_ATTR_STACKSIZE

_POSIX_THREAD_ATTR_STACKSIZE

支援線程棧大小屬性

_SC_THREAD_STACK_MIN

PTHREAD_STACK_MIN

線程棧儲存區的最小大小,以位元組為單位

_SC_THREAD_THREADS_MAX

PTHREAD_THREADS_MAX

每個進程的最大線程數

_SC_THREAD_KEYS_MAX

PTHREAD_KEYS_MAX

每個進程關鍵字的最大數目

_SC_THREAD_PRIO_INHERIT

_POSIX_THREAD_PRIO_INHERIT

支援優先順序繼承選項

_SC_THREAD_PRIO

_POSIX_THREAD_PRIO_

支援線程優先順序選項

_SC_THREAD_PRIORITY_SCHEDULING

_POSIX_THREAD_PRIORITY_SCHEDULING

支援線程優先順序調度選項

_SC_THREAD_PROCESS_SHARED

_POSIX_THREAD_PROCESS_SHARED

支援進程共用同步

_SC_THREAD_SAFE_FUNCTIONS

_POSIX_THREAD_SAFE_FUNCTIONS

支援安全執行緒函數

_SC_THREAD_DESTRUCTOR_ITERATIONS

_PTHREAD_THREAD_DESTRUCTOR_ITERATIONS

決定線上程退出時嘗試銷毀線程特定資料的嘗試次數

_SC_CHILD_MAX

CHILD_MAX

每個UID允許的最大進程數目

_SC_PRIORITY_SCHEDULING

_POSIX_PRIORITY_SCHEDULING

支援進程調度

_SC_REALTIME_SIGNALS

_POSIX_REALTIME_SIGNALS

支援即時訊號

_SC_XOPEN_REALTIME_THREADS

_XOPEN_REALTIME_THREADS

支援X/Open POSIX即時線程特性組

_SC_STREAM_MAX

STREAM_MAX

決定進程能夠開啟的流的數目

_SC_SEMAPHORES

_POSIX_SEMAPHORES

支援訊號量

_SC_SEM_NSEMS_MAX

SEM_NSEMS_MAX

決定線程能夠擁有的訊號量的最大數目

_SC_SEM_VALUE_MAX

SEM_VALUE_MAX

決定訊號量的最大值

_SC_SHARED_MEMORY_OBJECTS

_POSIX_SHARED_MEMORY_OBJECTS

支援共用記憶體對象

下面是調用sysconf( )的樣本:

if(PTHREAD_STACK_MIN== (sysconf(_SC_THREAD_STACK_MIN)))

 

Unix系統實現定義了很多幻數和常量,這些在不同程度上依從POSIX,也遵從POSIX.1標準。這就有助於軟體的可移植性。

以下兩種類型的限制是必須的:

1) 編譯時間限制(例如,短整型的最大值是什嗎?)

2) 運行時限制(例如,檔案名稱可以有多少個字元?)

編譯時間限制可在標頭檔中定義,程式在編譯時間可以包含標頭檔。但是,運行時限制則要求進程調用一個函數以擷取此種限制值。

為瞭解決此類問題:

1) 編譯時間限制(例如,短整型的最大值是什嗎?)

2) 不與檔案或目錄相關聯的運行時限制(sysconf函數)

3) 與檔案或目錄相關聯的運行時限制(pathconf和fpathconf函數)

2. 函數原型

#include
long sysconf(int name);
long pathconf(const char *pathname, int name);
long fpathname(int filedes, int name);
所有函數傳回值:若成功則返回相應值;若出錯則返回-1.

傳回值:

(1)如果name 不是一個合適的常量,則所有三個函數都會返回-1,並將 errno 設定為EINVAL。

(2)有些name可以返回變數的值(傳回值>=0),或者返回-1,這表示該值是不確定的,此時不改變 errno的值。

因此,程式要檢查錯誤,應該在調用 sysconf() 之前將 errno 設定為 0 ,然後如果返回-1,則檢驗到錯誤。

表1 sysconf的限制及name參數,用於標識系統限制。以__SC__開始的常量用作標識運行時限制的sysconf參數。

Name of limit

Description

name argument

ARG_MAX

maximum length,  in bytes, of arguments to the exec functions

_SC_ARG_MAX

ATEXIT_MAX

maximum number  of functions that can be registered with the atexit function

_SC_ATEXIT_MAX

CHILD_MAX

maximum number  of processes per real user ID

_SC_CHILD_MAX

clock  ticks/second

number of clock  ticks per second

_SC_CLK_TCK

COLL_WEIGHTS_MAX

maximum number  of weights that can be assigned to an entry of the LC_COLLATE order keyword  in the locale definition file

_SC_COLL_WEIGHTS_MAX

HOST_NAME_MAX

maximum length  of a host name as returned by gethostname

_SC_HOST_NAME_MAX

IOV_MAX

maximum number  of iovec structures that can be used with readv or writev

_SC_IOV_MAX

LINE_MAX

maximum length  of a utility's input line

_SC_LINE_MAX

LOGIN_NAME_MAX

maximum length  of a login name

_SC_LOGIN_NAME_MAX

NGROUPS_MAX

maximum number  of simultaneous supplementary process group IDs per process

_SC_NGROUPS_MAX

OPEN_MAX

maximum number  of open files per process

_SC_OPEN_MAX

PAGESIZE

system memory  page size, in bytes

_SC_PAGESIZE

PAGE_SIZE

system memory  page size, in bytes

_SC_PAGE_SIZE

RE_DUP_MAX

number of  repeated occurrences of a basic regular expression permitted by the regexec  and regcomp functions when using the interval notation /{m,n/}

_SC_RE_DUP_MAX

STREAM_MAX

maximum number  of standard I/O streams per process at any given time; if defined, it must  have the same value as FOPEN_MAX

_SC_STREAM_MAX

SYMLOOP_MAX

number of  symbolic links that can be traversed during pathname resolution

_SC_SYMLOOP_MAX

TTY_NAME_MAX

length of a  terminal device name, including the terminating null

_SC_TTY_NAME_MAX

TZNAME_MAX

maximum number  of bytes for the name of a time zone

_SC_TZNAME_MAX

表2 sysconf的限制及name參數,用於標識系統限制。以__PC__開始的常量用作標識運行時限制的pathconf參數和fpathconf參數。

Name of limit

Description

name argument

FILESIZEBITS

minimum number  of bits needed to represent, as a signed integer value, the maximum size of a  regular file allowed in the specified directory

_PC_FILESIZEBITS

LINK_MAX

maximum value of  a file's link count

_PC_LINK_MAX

MAX_CANON

maximum number  of bytes on a terminal's canonical input queue

_PC_MAX_CANON

MAX_INPUT

number of bytes  for which space is available on terminal's input queue

_PC_MAX_INPUT

NAME_MAX

maximum number  of bytes in a filename (does not include a null at end)

_PC_NAME_MAX

PATH_MAX

maximum number  of bytes in a relative pathname, including the terminating null

_PC_PATH_MAX

PIPE_BUF

maximum number  of bytes that can be written atomically to a pipe

_PC_PIPE_BUF

SYMLINK_MAX

number of bytes  in a symbolic link

_PC_SYMLINK_MAX

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.