1、open()
头文件:#include <unistd.h>
函数原型:int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_
t mode);
函数说明:flags打开文件方式
mode创建文件夹的权限
返回值:成功返回文件描述符,失败返回-1
2、close()
头文件:#include <unistd.h>
函数原型:int close(int fd);
返回值:成功返回0,失败返回-1.
3、read()
头文件:#include <unistd.h>
函数原型:size_t read(int fd, void *buf, size_t count);
返回值:成功返回读取的字节数,返回0则读取结束。
4、write()
头文件:#include <unistd.h>
函数原型:size_t write(int fd, const void *buf, size_t
count);
返回值:成功返回写入的字节数,失败返回-1。
5、ioctl()
头文件:#include <sys/ioctl.h>
函数原型:int ioctl(int fd, int request);
函数说明:ioctl()提供了一个用于控制设备及其描述符的和配置底层服务的接口。
返回值:成功返回0,失败返回-1。
6、fork()
头文件:#include <unistd.h>
函数原型:pid_t fork();
返回值:成功,父进程返回子进程pid,子进程返回0,失败-1。
7、getpid()
头文件:#include <unistd.h>
函数原型:pid_t getpid();
函数说明:获得调用进程的ID。
8、getppid()
头文件:#include <unistd.h>
函数原型:pid_t getppid();
函数说明:获得父进程的ID。
9、exit()
头文件:#include <stdlib.h>
函数原型:void exit(int status);
10、_exit()
头文件:#include <unistd.h>
函数原型:void _exit(int status);
函数说明:status 返回的状态。
11、wait()和waitpid()
头文件:#include <sys/wait.h>
函数原型:pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
12、exec函数族
头文件:#include <unistd.h>
函数原型:
int execl(const char *path, const char *arg, ...);
int execv(const char *path, char *const argv[]);
int execle(const char *path, const char *arg, ..., char *const envp[]);
int execve(const char *path, char *const argv[], char *const
envp[]);
int execlp(const char *file, const char *arg, ...);
int execvp(const char *file, char *const argv[]);
函数说明:
(1)前4个取路径名作为参数,后两个取文件名作为参数。
(2)与参数传递有关(l表示list,v表示vector)。execl、execlp 以及execle要求将新程序的每个命令行参数(command-line arguments )都指定为一个单独的参数,以NULL指针表明参数的 结束。另外三个函数(execv、execvp和execve),首先须要建立 一个指向各参数的指针数组,然后将该数组的地址作为这三个函 数的参数。
(3)与向新程序传递环境变量表有关。以e结尾的两个函数 (execle和execve)可以传递一个指向环境字符串指针数组的指 针。其它四个函数则使用调用进程中的environ变量为新进程复 制现有的环境。
13、kill() //发送信号
头文件:#include <signal.h>
函数原型:int kill(pid_t pid, int sig);
函数说明:pid 发送信号的目标进程
sig 信号的类型
返回值:成功 0,失败 -1.。
14、raise()//进程给自己发信号
头文件:#include <signal.h>
函数原型:int raise(int sig);
15、alarm()//一段时间后给自己发送SIGALRM信号
头文件:#include <unistd.h>
函数原型:unsigned int alarm(unsigned int seconds);
16、signal()//信号处理
头文件:#include <signal.h>
函数原型:sighandler_t signal(int signum, sighandler_t handler);
17、sigaction()//POSIX标准
头文件:#include <signal.h>
函数原型:int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
函数说明:act表示要设置的对信号的新处理方式。
oldact表示原来对信号的处理方式。
返回值:函数执行成功返回0,失败返回-1。
18、pipe()//普通管道
头文件:#include <unistd.h>
函数原型:int pipe(int filedes[2]);
函数说明:写到filedes[1]的所有数据都可以从filedes[0]读回来。
19、mkfifo()//命名管道
头文件:#include <unistd.h>
函数原型:int mkfifo(const char *pathname, mode_t mode);
- semget() (System V信号量)
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
函数原型:int semget(key_t key, int nsems, int semflg);
函数说明:该函数的作用是创建一个新信号量或取得一个已有信 号量的键。参数key是一个整数值,不相关的进程可 以通过它访问同一个信号量。程序对所有信号量的访 问都是间接的,它先提供一个键,再由系统生成一个 相应的信号量标识符。只有 semget函数才能直接使 用信号量键,所有其他的信号量函数都是使用 semget 函数返回的信号量标识符。
21、semop()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
函数原型:int semop(int semid, struct sembuf *sops, unsigned nsops);
函数说明:该函数用于改变信号量的值。
22、semctl()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
函数原型:int semctl(int semid, int semnum, int cmd, ...);
函数说明:该函数用来控制信号量信息。
23、shmget()
头文件:#include <sys/ipc.h>
#include <sys/shm.h>
函数原型:int shmget(key_t key, size_t size, int shmflg);
函数说明:与信号量一样,程序需要提供一个参数key,它有效 地为共享内存命名。shmget函数返回一个共享内存标识符, 该标识符用于后续的共享内存函数。参数size以字节为单 位指定需要共享的内存容量。参数 shmflg包含9个比特 的权限标志,它们的作用与创建文件时使用的 mode标志 一样。
24、shmat()
头文件:#include <sys/ipc.h>
#include <sys/shm.h>
函数原型:void *shmat(int shmid, const void *shmaddr, int shmflg);
函数说明:第一次创建共享内存段时,它不能被任何进程访问。 要想启用对该共享内存的访问,必须将其连接到一个进程的地址 空间中,这项工作由shmat函数完成。
shmid是由shmget返回的共享内存标识符。
shmaddr指定共享内存连接到当前进程中的地址位置。它通常
是一个空指针,表示让系统来选择共享内存出现的地址。
shmflg是一组位标志。
25、shmdt()
头文件:#include <sys/ipc.h>
#include <sys/shm.h>
函数原型:int shmdt(const void *shmaddr);
函数说明:shmdt函数的作用是将共享内存从当前进程中分离。
26、shmctl()
头文件:#include <sys/ipc.h>
#include <sys/shm.h>
函数原型:int shmctl(int shmid, int cmd, struct shmid_ds *buf);
函数说明:该函数是共享内存的控制函数shmid是shmget返回的 共享内存标识符。cmd是要采取的动作,有三个取值。
27、msgget()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
函数原型:int msgget(key_t key, int msgflg);
函数说明:msgget函数的作用是创建和访问一个消息队列。key 用来命名某个特定的消息队列。msgflg由9个权限标志组成。
28、msgsnd()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
函数原型:int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
函数说明:msgsnd函数用来把消息添加到消息队列中。
29、msgrcv()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
函数原型:ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
函数说明:msgrcv函数从一个消息队列中获取消息。
30、msgctl()
头文件:#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
函数原型:int msgctl(int msqid, int cmd, struct msqid_ds * buf);
函数说明:msgctl函数的作用与共享内存的控制函数非常类似。
31、pthread_create()
头文件:include <pthread.h>
函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine)(void*), void *arg);
函数说明:thread指向一个pthread_t型变量,用于返回线程ID。
attr:用于定制各种不同的线程属性,一般设为NULL。
start_routine:新线程的工作函数。
arg:传递给执行函数的参数。
32、pthread_self()
头文件:#include <pthread.h>
函数原型:pthread_t pthread_self(void);
函数说明:线程ID的获取方式有两种:通过pthread_create()返 回给调用者;通过pthread_self()获得其自身的ID。
33、pthread_equal()
头文件:#include <pthread.h>
函数原型:int pthread_equal(pthread_t t1, pthread_t t2);
函数说明:可以使用pthread_equal()函数检查两个线程ID是否 相同
34、pthread_exit()
头文件:#include <pthread.h>
函数原型:void pthread_exit(void *value_ptr);
函数说明:调用pthread_exit()等价于在工作函数中执行 return,区别是pthread_exit()可以在工作函数调用的任何函数 中被调用。
35、pthread_join()
头文件:#include <pthread.h>
函数原型:int pthread_join(pthread_t thread, void **value_ptr);
返回值:成功返回0。
36、pthread_detach()
头文件:#include <pthread.h>
函数原型:int pthread_detach(pthread_t thread);
函数说明:线程分离。