1:getpid函数和getppid函数:获取进程ID和父进程ID
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void)
pid_t getppid(void)
函数返回值,返回当前进程ID,pid_t这种数据类型的本质是一个整数
2:fork函数:建立子进程
#include <sys/types.h>
#include <unistd.h>
pid_t fork(void)
fork
fork函数用于从已存的进程中穿件一个新的进程,刺心的进程称为子进程,而原进程称为父进程,在运行的程序中通过检查fork函数的返回值可以得知该进程是父进程,还是子进程
如果执行成功,父进程得到的返回值是子进程的进程号,儿子进程则返回0,如果执行失败,讲返回-1
3:sleep()和usleep()会令目前的进程展厅,知道达到参数seconds所指定的时间或是被信号所终端
#include <unistd.h>
unsigned int sleep(unsigned inr seconds)
函数返回值,若进程暂停到参数seconds所指定的时间,则返回0,若有信号终端则返回剩余秒数 usleep是以微妙计算的
4:extc函数族:找到可执行文件
#include <unistd,h>
int execl(const char *path,const char *arg)
int execlp(const char *file,const char *arg)
int execle (const char *path,const char *arg,...,char *const envp[1])
int execv(const char *path,char *const argv[])
int execvp(const char *file,char *const argv[])
int execve (const char *filename ,char *const argv[],char *const envp[])
exec被调用时会替换调用它的进程,直接返回到调用它的进程的父进程,如果出错,则返回-1并且设置errno,也就是说在调用进程内部执行一个可执行文件,在调用exec进程的实体中,包括代码段,数据段和堆栈登都已经被新的内同取代,只有进程ID是不变的,exec函数族的函数执行成功后不会返回,exec函数族包括6哥函数
这六个函数的第一个参数均为一个字符串,在execlp和execvp两个函数中表示所执行的程序的名称,在其它的函数中表示所执行程序的路径,第二个参数为参数列表,execl,execlp,ececle使用null为结束的字符串,exevl,execvp和execve使用以字符串的数组,exevle和execve两个函数还有第三个参数,表示传入的环境变量
execl用来执行一个程序文件,文件的路径使用参数path字符串表示
execlp会从path环境变量所指的目录中查找符合参数file的文件名,后面的参数与execl想通
execle函数基本和execl函数想通,正价参数envp,这个参数是表示需要传入参数的环境变量
execv函数用来执行参数path字符串所代表的文件路径,与execl不同的地方在于execve指需要两个参数,第二个参数利用数组指针来传递给执行文件
execvp函数会从path环境变量所指的目录中查找符合参数file的文件名,其它的参数和execv想痛
execve函数基本参数和execv函数想通,正价了参数envp表示需要传入的环境标量
5:_exit函数和_Exit函数:结束进程执行
第一个函数用来立刻借宿目前进程的执行,并把参数status返回给父进程,关闭未关闭的文件,此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数得到子进程借宿状态,
#include《unistd.h》
#void _exit (int status) status表示退出进程的退出状态
第二个函数是另外一个函数,其实用的方法和第一个完全想通
与第一个函数类型的还有一个叫atext函数,这个函数在c语言标志的库函数,第一在stdlib,h中,她的作用就是可以注册一个函数,这个函数在本进程退出的时候会被调用,从而进程一些退出钱的清理炒作,但是第一个函数不会处理atexit注册的函数