在Unix类操作系统(如:Linux 、MacOS)中提供对POSIX(可移植操作系统接口)操作系统API的访问。它定义了许多系统调用和库函数,用于与操作系统内核进行交互,包括文件操作、进程控制、环境管理。
常用函数:
1.文件操作
- access() :检查文件的访问权限
- close() :关闭文件描述符
- read():从文件描述符读取数据
- write():向文件描述符写入数据
- lseek():在文件中移动文件指针
2.进程控制
- fork():创建子进程;
- exec*():用于在当前进程上执行一个新的程序
- _exit():终止进程
- getpid:获取当前进程的进程ID
- getppid():获取父进程的进程ID
- execv():执行程序
3.环境管理
- getcwd():获取当前工作目录
- chdir():改变当前工作目录
- setenv():设置环境变量
- unserenv():删除环境变量
4.标准输入输出
- isatty():检查文件描述符是否是终端
- sleep():使进程说面指定秒数。
- pipe():创建一个管道。
5.系统信息
- gethostname():获取主机名
- sysconf():获取系统配置信息
6.系统常量
unistd.h
中定义了一些常用的系统常量,如文件访问权限标志(O_RDONLY
、O_WRONLY
、O_RDWR
)、文件执行权限(S_IRUSR
、S_IWUSR
、S_IXUSR
)等。
示例
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
// 发生错误
perror("fork failed");
exit(EXIT_FAILURE);
} else if (pid == 0) {
// 子进程
printf("This is the child process. PID: %d\n", getpid());
execlp("/bin/ls", "ls", NULL); // 在子进程中执行 ls 命令
} else {
// 父进程
printf("This is the parent process. PID: %d\n", getpid());
wait(NULL); // 等待子进程完成
printf("Child process finished.\n");
}
return 0;
}
unistd.h头文件对于编写需要与操作系统底层交互的C/C++程序非常重要,它允许程序员直接与操作系统进行交互,执行底层任务,访问文件和目录,执行系统调用等操作