_exit 和 exit 最大的区别在于后者在结束进程时会刷新缓存区,前者则不会刷新缓存区;
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
int main(int argc, const char *argv[])
{
pid_t pid;
if( (pid = fork()) < 0)
{
perror("fork error");
exit(1);
}
else if(pid == 0)
{
printf("hello world");
exit(0);
//_exit(0);
}
else if(pid > 0)
{
waitpid(pid, NULL, 0);
}
return 0;
}
我们分别调用exit与_exit函数,分别编译执行后如下:
exit:
输出了hello world。
_exit:
什么都没输出,直接结束。