进程是什么???
在我看来,进程就是当系统在执行某个程序时,分配和释放的各种资源的过程(是过程,所以当程序退出时,进程也就结束了)!
进程和程序有什么区别呢???
程序是静态的,只是占用了一段内存空间,没有其他任何意义;
而进程是动态的,它是程序执行的过程。
ps -axj
不按上图的顺序说,先说用最多的:PID:进程号(Process Identity Number)唯一地标识一个进程
fork函数(完全复制进程,一块进行父进程,一块子进程)
要的头文件:#include <sys/types.h> // 提供类型pid_t的定义
无参数;
返回值:0:子进程
vfork()函数(先做子进程,再做父进程,不用开辟一块新的内核空间)
exec函数
exec函数族提供了一种在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段。在执行完之后,原调用进程的内容除了进程号外,其他全部都被替换了。
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[]);
总结下上面的几个函数:exec不动,v表示用数组,l表示用数组,p表示不使用绝对路径(系统会自动从环境变量“$PATH”所包含的路径中进行查找),e是你自己自定的环境变量;
返回值:-1 出错
举个系统调用的例子:
OK!(abc的功能就是输出OK!)
一秒延时
in parent ………………
exit()和_exit()
_exit()为系统调用,而exit()则是库函数调用,里面包含了_exit()还有很多其他的函数!
wait函数(成功返回进程号,失败返回-1)(一般不写参数)
waitpid函数(功能更强大)(3个参数)
pid
status
options