网站底部版权信息,网上订单管理系统,做企业网站的要点,望野思想感情#include stdlib.h
void exit(int status); #include unistd.h
void _exit(int status);
exit函数与_exit函数一样#xff0c;都是系统函数#xff0c;且都是用来终止一个进程的#xff0c;无论在程序中的什么位置#xff0c;只要执行这exit或_exit系统…#include stdlib.h
void exit(int status); #include unistd.h
void _exit(int status);
exit函数与_exit函数一样都是系统函数且都是用来终止一个进程的无论在程序中的什么位置只要执行这exit或_exit系统调用进程就会被终止。这两个函数都有一个整型形参用于传递进程结束时的状态正常结束还是意外结束。一般0表示正常结束非0值如1表示出现了错误非正常结束。可以利用wait系统调用接收子进程的返回值从而针对不同的情况进行不同的处理。
exit与_exit是有区别的。首先它们在函数库中的定义不同头文件也不一样另外_exit会立即进入内核而exit则会先执行一些清除处理调用执行各终止处理程序关闭所有所有标准I/O流、清除包括PCB在内的各种数据结构等然后进入内核。 #include unistd.h
#include sys/types.h
pid_t vfork( void );
vfork也用于产生一个子进程返回值与fork一样。其与fork的区别fork创建的子进程要复制父进程的数据段即各自独立而vfork函数创建的子进程在没有调用exec函数族或exit之前会与父进程共享数据段绝对共享如果父进程引起数据段的改变也会体现在子进程中。另外fork不会对父子进程执行的次序进行限制而vfork子进程在调用exec函数族或exit之前子进程先执行父进程挂起直到子进程调用了exec函数族或exit函数才会唤醒父进程父子进程执行的次序才不会受到限制。
因此vfork创建出来的并不是真正意义上的进程而是线程因为它缺少了进程的四要素之一独立的内存资源。进程的四要素1.要有一段程序供该进程运行2.进程专用的系统堆栈空间3.进程控制块4.有独立的储存空间。