在這篇文章中,我們將整理一份 unistd.h
常用函數速查表 ,便于快速查找和記憶,涵蓋文件 I/O、進程管理、系統信息、用戶/組信息等方面。
unistd.h
常用函數速查表(POSIX/Linux/macOS)
1. 文件與 I/O 操作函數 說明 示例 int access(const char *path, int mode)
檢查文件權限/存在性(R_OK
讀,W_OK
寫,X_OK
執行,F_OK
存在) access("file.txt", R_OK)
off_t lseek(int fd, off_t offset, int whence)
改變文件指針位置(SEEK_SET
, SEEK_CUR
, SEEK_END
) lseek(fd, 0, SEEK_SET)
ssize_t read(int fd, void *buf, size_t count)
從文件描述符讀取數據 read(fd, buf, 100)
ssize_t write(int fd, const void *buf, size_t count)
向文件描述符寫入數據 write(fd, buf, len)
int close(int fd)
關閉文件描述符 close(fd)
2. 進程管理函數 說明 示例 pid_t fork(void)
創建子進程 pid_t pid = fork();
pid_t getpid(void)
獲取當前進程 PID getpid()
pid_t getppid(void)
獲取父進程 PID getppid()
void _exit(int status)
立即退出進程(不執行清理) _exit(0)
int execv(const char *path, char *const argv[])
啟動新程序(替換當前進程鏡像) execv("/bin/ls", args)
3. 系統 & 休眠函數 說明 示例 unsigned int sleep(unsigned int seconds)
秒級休眠 sleep(2)
int usleep(useconds_t usec)
微秒級休眠 usleep(500000)
long sysconf(int name)
獲取系統配置信息(如 _SC_NPROCESSORS_ONLN
CPU 數) sysconf(_SC_PAGESIZE)
long pathconf(const char *path, int name)
獲取路徑上的系統限制 pathconf("/", _PC_NAME_MAX)
4. 用戶 / 組信息函數 說明 示例 uid_t getuid(void)
獲取實際用戶 ID getuid()
uid_t geteuid(void)
獲取有效用戶 ID geteuid()
gid_t getgid(void)
獲取實際組 ID getgid()
gid_t getegid(void)
獲取有效組 ID getegid()
5. 常用宏定義宏 說明 R_OK
可讀權限 W_OK
可寫權限 X_OK
可執行權限 F_OK
文件是否存在 SEEK_SET
文件開頭 SEEK_CUR
當前位置 SEEK_END
文件末尾
6. 示例:檢查文件并讀取內容
# include <unistd.h>
# include <fcntl.h>
# include <iostream> int main ( ) { if ( access ( "test.txt" , R_OK) != 0 ) { std:: cerr << "File not readable or not exist.\n" ; return 1 ; } int fd = open ( "test.txt" , O_RDONLY) ; if ( fd == - 1 ) { perror ( "open" ) ; return 1 ; } char buf[ 100 ] ; ssize_t n = read ( fd, buf, sizeof ( buf) - 1 ) ; if ( n >= 0 ) { buf[ n] = '\0' ; std:: cout << "Content: " << buf << "\n" ; } close ( fd) ; return 0 ;
}