摘要:警告通過函數(shù),可以檢索很多敏感數(shù)據(jù),例如以及其它函數(shù)。當開啟了安全模式,函數(shù)并不會執(zhí)行任何的權限檢測。返回當前進程所在的當前控制終端的路徑名返回值成功時,返回路徑名。返回值返回一個關聯(lián)數(shù)組,下標為定義的各種限制。
POSIX: 簡介:
該模塊包含了定義在 IEEE 1003.1(POSIX.1)標準文檔里的函數(shù)的接口,通過其它手段無法訪問。
警告:
通過POSIX函數(shù),可以檢索很多敏感數(shù)據(jù),例如:posix_getpwnam()以及其它函數(shù)。當開啟了安全模式,POSIX函數(shù)并不會執(zhí)行任何的權限檢測。因此,當正在上述的環(huán)境下操作,強烈建議關閉POSIX擴展(在配置行中使用 "--disable-posix")。
POSIX函數(shù)默認是啟用的,可通過 "--disable-posix" 來禁用POSIX函數(shù)
預定義常量,分3大類:
1.posix_access_constants - 權限相關,php5.1.0開始支持:
POSIX_F_OK - 檢查文件是否存在 POSIX_R_OK - 檢查文件是否存在,且具有 "讀" 權限 POSIX_W_OK - 檢查文件是否存在,且具有 "寫" 權限 POSIX_X_OK - 檢查文件是否存在,且具有 "執(zhí)行" 權限
2.posix_mknod_constants - 文件類型,php5.1.0開始支持:
POSIX_S_IFBLK - 塊特殊文件 POSIX_S_IFCHR - 字符特殊文件 POSIX_S_IFIFO - FIFO(pipe-管道)特殊文件 POSIX_S_IFREG - 普通文件 POSIX_S_IFSOCK - socket
3.posix_setrlimit_constants - php7.0.0開始支持:
函數(shù) posix_access(string $file[, int $mode = POSIX_F_OK])你不妨看一下下面參考頁,關于你的操作系統(tǒng)的setrlimit()的注意點,有關于實現(xiàn)POSIX的limits的差異的解釋,甚至是跨操作系統(tǒng)的聲明。
POSIX_RLIMIT_AS - 進程地址空間的最大尺寸,單位是bytes。也可查看PHP的 "memory_limit" 配置指令 POSIX_RLIMIT_CORE - 核心文件的最大尺寸。如果設置為0,將不會生成核心文件 POSIX_RLIMIT_CPU - 進程可使用的CPU最大時間,單位是秒。當達到軟限制(soft limit),將發(fā)送一個 "SIGXCPU" 信號,這個信號可以被 "pcntl_signal()" 捕獲。依賴于操作系統(tǒng),每秒都會發(fā)送額外的 "SIGXCPU"信號,直到達到硬限制(hard limit),基于這點,會發(fā)送一個無法捕獲的 "SIGKILL" 信號。也可查看
"set_time_limit()"POSIX_RLIMIT_DATA - 進程數(shù)據(jù)段的最大尺寸,單位是bytes。這基本不會對PHP的執(zhí)行造成任何影響,除非使用了一個叫做 "brk()" 或 "sbrk()"的擴展
POSIX_RLIMIT_FSIZE - 進程可以創(chuàng)建的文件的最大尺寸,單位是bytes POSIX_RLIMIT_LOCKS - 進程可以創(chuàng)建的最大的鎖定數(shù)量。僅支持非常老版的linux內(nèi)核 POSIX_RLIMIT_MEMLOCK - 內(nèi)存中,可以鎖定的最大字節(jié)數(shù) POSIX_RLIMIT_MSGQUEUE - 可以分配給 POSIX 消息隊列的最大字節(jié)數(shù)。PHP不支持POSIX 消息隊列,因此,這個限制沒有任何影響,除非,你使用了一個實現(xiàn)了支持 "POSIX_RLIMIT_MSGQUEUE" 的擴展 POSIX_RLIMIT_NICE - 進程可以設置 "renice"(linux進程的優(yōu)先級之類的) 的最大值。值可以被設置為:20-我們設置的值,作為資源限制,不能設置為負 POSIX_RLIMIT_NOFILE - 進程可以打開的 >(大于)最大文件描述符數(shù)字的值。 POSIX_RLIMIT_NPROC - 進程的真實用戶ID可以創(chuàng)建的進程(和線程、或者線程,在一些操作系統(tǒng)上)的最大個數(shù)。 POSIX_RLIMIT_RSS - 進程的常駐集合的最大尺寸,單位是 pages POSIX_RLIMIT_RTPRIO - 通過 "sched_setscheduler()" 和 "sched_setparam()" 系統(tǒng)調(diào)用,可以設置的最大真實時間優(yōu)先。 POSIX_RLIMIT_RTTIME - 如果使用真實的時間調(diào)度,在不進行阻塞的系統(tǒng)調(diào)用下,進程可以消耗掉最大CPU時間,單位是微秒 POSIX_RLIMIT_SIGPENDING - 進程的真實用戶ID,可以設置的信號隊列的最大個數(shù) POSIX_RLIMIT_STACK - 進程棧的最大尺寸,單位是bytes POSIX_RLIMIT_INFINITY - 用于指明資源大小不受限制(給資源限制設置了一個無限大值)。
查看用戶對文件是否具有指定的權限
posix_ctermid()參數(shù):
$file - 測試的文件名 $mode - 權限,包含:POSIX_F_OK, POSIX_R_OK, POSIX_W_OK, POSIX_X_OK的一個或多個。
返回當前進程所在的當前控制終端的路徑名
返回值: 成功時,返回路徑名。否則返回false,并設置錯誤號??赏ㄟ^ "posix_get_last_error()" 來獲取posix_errno() - posix_get_last_error()別名 posix_get_last_error()
檢索最后的posix函數(shù)調(diào)用失敗,返回的錯誤號。錯誤號關聯(lián)的錯誤消息,可通過 "posix_strerror()" 來獲取
posix_strerror(int $errno)通過給定的錯誤號,返回關聯(lián)的POSIX系統(tǒng)錯誤消息
posix_getcwd()獲取當前腳本的工作目錄的絕對路徑
posix_getegid()返回當前進程的有效用戶組ID
posix_geteuid()返回當前進程的有效用戶ID
posix_getgid()返回當前進程的真實用戶組ID
posix_getuid()返回當前進程的真實用戶ID
posix_getgrgid(int $gid)通過傳入組ID,獲取給定的用戶組的相關信息
posix_getgrnam(string $name)通過傳入組名稱,獲取給定的用戶組的相關信息
posix_getgroups()獲取當前進程的用戶組集合
返回值:
返回一個索引數(shù)組,包含組id的集合
返回擁有當前進程的用戶的登陸名
posix_getpgid(int $pid)示例:
獲取指定進程的進程組標識符(進程組id),返回整數(shù)
posix_getpgrp()注意:
該函數(shù)不是POSIX函數(shù),但是常見于BSD和System V的系統(tǒng)上。如果系統(tǒng)不支持該函數(shù),在編譯時就不會被包含進來。應該提前使用 "function_exists()" 檢查,存在再使用
獲取當前進程的進程組標識符(進程組id),返回整數(shù)
可查看:POSIX.1 和 POSIX系統(tǒng)上的getpgrp(2) 幫助手冊,獲取關于進程組的更多信息
獲取當前進程的進程標識符(進程id)
posix_getppid()獲取當前進程的父進程標識符(父進程id)
posix_getpwnam(string $username)通過用戶名,獲取給定用戶的信息
posix_getpwuid(int $uid)返回值:
成功,返回一個關聯(lián)數(shù)組,下標如下,失敗返回false: name - 是一個短的、通常少于16個字符,非真實的、全名。應該同調(diào)用函數(shù)時,傳遞的$username參數(shù)一致,截斷多余的字符 passwd - 返回加密后的用戶密碼的字符串。通常,例如系統(tǒng)的shadow密碼,使用 "*" 代替 uid - 用戶ID gid - 用戶組ID。使用 posix_getgrgid() 獲取用戶組名和它的成員列表 gecos - 一個過時的元素,包含了 "," 分隔的用戶的全名、辦公室電話、辦公室號碼以及家庭電話號碼。大多數(shù)的系統(tǒng)上,只有用戶的全名有效。 dir - 用戶家目錄的絕對路徑 shell - 可執(zhí)行的用戶的默認shell的絕對路徑 示例: 輸出: Array( [name] => tom [passwd] => x [uid] => 10000 [gid] => 42 [gecos] => "tom,,," // "," 分隔 [dir] => "/home/tom" [shell] => "/bin/bash" )
通過用戶id,獲取給定用戶的信息
posix_getrlimit()返回一個關于當前資源的軟限制和硬限制的信息數(shù)組
posix_getsid(int $pid)每個資源有一個關聯(lián)的軟限制和硬限制。 軟限制-查看linux系統(tǒng) 硬限制-查看linux系統(tǒng) 一個無特權的進程,可能只能設置它的軟限制為:0-硬限制大小,并且必須低于硬限制的值。 返回值: 返回一個關聯(lián)數(shù)組,下標為定義的各種限制。每個限制都有一個軟限制和硬限制。 core - 核心文件的最大尺寸。當為0,不會創(chuàng)建核心文件。核心文件大于該設定值,將會被截斷 totalmem - 進程的內(nèi)存最大值,單位為bytes virtualmem - 進程的虛擬內(nèi)容的最大值,單位為bytes data - 進程的數(shù)據(jù)段的最大值,單位為bytes stack - 進程棧的最大值,單位為bytes rss - RAM中常駐的虛擬頁面的最大個數(shù) maxproc - 可被調(diào)用進程的真實用戶ID創(chuàng)建的最大進程數(shù)量 memlock - 在RAM中,可被鎖定的內(nèi)存的最大字節(jié)數(shù) cpu - 進程允許使用的最大CPU時間 filesize - 進程可以創(chuàng)建的文件的最大尺寸,單位是bytes openfiles - 進程可以打開的最大文件數(shù)量 示例: 輸出: Array( [soft core] => 0 [hard core] => unlimited [soft data] => unlimited [hard data] => unlimited [soft stack] => 8388608 [hard stack] => unlimited )
返回指定進程的session ID。進程的session ID是會話領導者(session leader)的進程組id
posix_initgroups(string $name, int $base_group_id)對指定的用戶,計算其組訪問列表
參數(shù):posix_kill(int $pid, int $sig)
$name - 指定的用戶名
$base_group_id - 密碼文件里的組ID
##posix_isatty(mixed $fd)
檢查文件描述符是否是一個有效的終端類型的設置(是否是tty)
參數(shù):
$fd - 文件描述符,期望是一個文件資源或一個整型。整型將被假定為可以直接傳遞到基礎系統(tǒng)調(diào)用的文件描述符。幾乎在所有情況下,提供的是一個文件資源。
給指定的進程發(fā)送一個$sig指定的信號!
參數(shù):
$pid - 進程idposix_mkfifo(string $pathname, int $mode)
$sig - PCNTL信號預定義常量
創(chuàng)建一個特殊的FIFO文件,存在于文件系統(tǒng),并且作為進程的雙向通信橋梁
posix_mknod(string $pathname, int $mode[, int $major = 0[, int $minor = 0]])參數(shù):
$pathname - FIFO文件(管道) $mode - 必須是8進制格式。新創(chuàng)建的FIFO的權限,也依賴于當前的umask()設置。新創(chuàng)建的文件權限是(mode & ~umask)
創(chuàng)建一個特殊的或者一般的文件
參數(shù):posix_setegid(int $gid)
$pathname - 創(chuàng)建的文件
$mode - 這個參數(shù)由文件類型(POSIX_S_IFREG,POSIX_S_IFCHR, POSIX_S_IFBLK, POSIX_S_IFIFO,POSIX_S_IFSOCK其中一個)和訪問權限(0664等),按位或組成。
$major -主設備內(nèi)核標識符(當使用S_IFCHR或S_IFBLK時,需要傳遞該參數(shù)) $minor - 監(jiān)控設備內(nèi)核標識符
設置當前進程的有效組ID。這是個特權函數(shù),需要操作系統(tǒng)上具有特殊權限(通常是root權限),才能執(zhí)行該函數(shù)。posix_seteuid(int $uid)
設置當前進程的有效用戶ID。這是個特權函數(shù),需要操作系統(tǒng)上具有特殊權限(通常是root權限),才能執(zhí)行該函數(shù)。posix_setgid(int $gid)
設置當前進程的真實用戶組ID。這是個特權函數(shù),需要操作系統(tǒng)上具有特殊權限(通常是root權限),才能執(zhí)行該函數(shù)。函數(shù)調(diào)用的適當?shù)捻樞蚴牵菏紫日{(diào)用 posix_setgid(),最后調(diào)用 posix_setuid()。
注意:如果是超級用戶調(diào)用,也會設置有效用戶組ID
設置指定進程的進程組IDposix_setrlimit(int $resource, int $softlimit, int $hardlimit)
設置給定系統(tǒng)資源的軟限制和硬限制。
參數(shù): $resource - 是posix_setrlimit_constants預定義常量 $softlimit -posix_setsid()
軟限制,任意設置或者 POSIX_RLIMIT_INFINITY - 無限大 $hardlimit - 硬限制,任意設置或者
POSIX_RLIMIT_INFINITY - 無限大
設置當前進程為session leader(會話領導者)posix_setuid(int $uid)
設置當前進程的真實用戶ID。這是個特權函數(shù),需要操作系統(tǒng)上具有特殊權限(通常是root權限),才能執(zhí)行該函數(shù)。posix_times()
獲取當前CUP使用信息
posix_ttyname($mixed $fd)返回值:
返回一個關聯(lián)數(shù)組ticks - 重啟到現(xiàn)在,已經(jīng)過去的 clock ticks 個數(shù) utime - 當前進程使用的用戶時間 stime - 當前進程使用的系統(tǒng)時間 cutime - 當前進程和子進程使用的用戶時間 cstime - 當前進程和子進程使用的系統(tǒng)時間警告:
返回當前打開的文件描述符所在的終端設備的絕對路徑
posix_uname()參數(shù):
$fd - 文件描述符,期望是一個文件資源或一個整型。整型將被假定為可以直接傳遞到基礎系統(tǒng)調(diào)用的文件描述符。幾乎在所有情況下,提供的是一個文件資源。
獲取系統(tǒng)相關信息。
返回值: 返回一個關于系統(tǒng)信息的關聯(lián)數(shù)組
sysname - 操作系統(tǒng)名稱(例如:Linux) nodename - 系統(tǒng)名稱(例如:valiant) release - 操作系統(tǒng)的發(fā)布版(例如:2.6.15-1-686) version - 操作系統(tǒng)版本(例如:#4 Tue Jul 20 17:01:36 MEST 1999) machine - 系統(tǒng)平臺(例如:i586) domainname - DNS域名(例如:baidu.com)
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/28301.html
摘要:本節(jié)主要講解常用函數(shù)和進程池的概念,也會涉及到守護進程的知識。所以任何時候,建議預先創(chuàng)建好進程,也就是使用進程池的方式實現(xiàn)。 本節(jié)主要講解Posix常用函數(shù)和進程池的概念,也會涉及到守護進程的知識。本節(jié)難度較低。 Posix常用函數(shù) posix_kill 向指定pid進程發(fā)送信號。成功時返回 TRUE , 或者在失敗時返回 FALSE 。 bool posix_kill ( int $...
摘要:多進程中與多進程相關的兩個重要拓展是和。函數(shù)執(zhí)行期間,主進程除了等待無法處理其他任務,所以一般不認為這是多進程編程。回收子進程有兩種方式,一種是主進程調(diào)用函數(shù)等待子進程結束另外一種是處理信號。 轉載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎 web請求 cookie web響應 session 數(shù)據(jù)庫操作 加解...
摘要:限于,可選的文件描述符序列,用于在父子進程間保持開放。如果設置了,表示派生的進程號子進程返回碼,表示進程未終止。如果未捕獲標準錯誤返回方法如果非,拋出異常異常模塊的異?;愖舆M程執(zhí)行超時。 常量 subprocess.DEVNULL:可傳遞給stdin, stdout, stderr參數(shù)的特殊值,意味著將使用特殊文件os.devnull重定向輸入輸出 subprocess.PIPE:可...
摘要:我們知道,發(fā)起函數(shù)調(diào)用,需要構造一個棧幀。構造棧幀的具體實現(xiàn)細節(jié)的選擇,被稱為調(diào)用慣例。要想完成這個函數(shù)調(diào)用邏輯,就要運行時構造棧幀,生成參數(shù)壓棧和清理堆棧的工作。目前,幾乎支持全部常見的架構。 原文:http://nullwy.me/2018/01/java...如果覺得我的文章對你有用,請隨意贊賞 遇到的問題 前段時間開發(fā)的時候,遇到一個問題,就是如何用 Java 實現(xiàn) chdir...
閱讀 2099·2021-11-15 18:09
閱讀 977·2021-09-06 15:13
閱讀 2689·2021-08-23 09:43
閱讀 2068·2019-08-30 15:54
閱讀 2261·2019-08-30 13:56
閱讀 2532·2019-08-26 11:31
閱讀 3126·2019-08-26 10:56
閱讀 792·2019-08-26 10:28