1.任务:子进程做的事情和父进程差不多(子承父业)
父进程创建出子进程之后,子进程做的事情与父进程完全不同(自力更生)
2.exec:
int exec l(const char *path, const char *arg, ...); int exec v(const char *path, char *const argv[]);
l --- list
path --- 表示要运行的文件的路径(要包含文件名)
eg:"/bin/ls”
arg --- 要执行的文件的名字
eg:“ls” ... --- 要执行的文件本身需要用到的参数(都是字符串形式)
NULL 表示结束
v --- vector(向量)
主要是第二个参数的传参方式不同
p ---path //PATH(可执行文件路径)
表示寻找可执行文件是通过PATH环境变量
e ---表示该函数的环境变量
表示可以要给执行的程序,传递一个环境变量
3.进程的终止:
正常结束:1.main函数中return
2.exit(库函数)
3._exit(系统调用)
4.主线程退出
5.主线程调用
异常结束:1.abort()终止
2.signal kill pid
1.exit: void exit(int sattus) ;
2._exit:void _exit(int status);
3.atexit:int atexit(void (*function) (void)) ;在进程结束时自动执行后面所跟的函数