进程控制(fork和exit)
来源:互联网 发布:如何免费开淘宝店 编辑:程序博客网 时间:2024/05/16 15:29
fork vs vfork
1. 成功调用一次,返回两个值,子进程返回0,父进程返回子进程的pid;出错返回-1
2. 头文件:
#include <unistd.h>
#include <sys/types.h>
3. fork函数会拷贝父进程的数据空间、堆栈等资源,这样就会有两份数据,与父进程不相干扰。
4. vfork函数不会拷贝父进程的资源,与父进程公用一份资源,修改数据会影响到父进程的数据一致性。
5. 使用exec切换到新的程序或者使用exit退出。
6. 当调用vfork函数去创建子进程的时候,需要使用_exit()退出,因为_exit()退出时,不会清除缓存区和关闭所有文件,若使用exit()退出则会严重影响父进程
Example:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void main(){
pid_t pid;
if(fork() == 0){ //子进程中
printf("In child process, pid is %d\n", getpid());
exit(0);
}
else{ //父进程中
printf("In parent process, pid is %d\n", getpid());
}
}
http://baike.baidu.com/view/1952900.htm
http://baike.baidu.com/view/1745340.htm
exit() vs _exit()
1. exit(0) 表示正常退出,exit(xx) xx非0则为异常退出
2. exit() 函数会直接退出程序,即便是在被调用的函数的外部函数执行;
3. _exit() 直接使进程停止运行,清除其所使用的内存空间,并销毁其在内核中的各种数据结构,exit()在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区的内容写回文件。
#include <stdio.h>
#include <stdlib.h>
void main(){
int i;
for(i = 0; i < 3; i++){
printf("%i\n", i);
}
void func();
func();
// exit(0);
printf("?????\n"); //不会被输出
}
void func(){
printf("In func\n");
exit(0);
}
http://baike.baidu.com/view/1542946.htm
- 进程控制(fork和exit)
- APUE笔记---第八章 进程控制(函数fork、exit、wait等)
- linux进程控制函数--fork,exec,exit,wait,sleep
- 进程控制のfork()
- 进程控制-进程终止(exit、_exit)
- 进程控制-进程创建(fork、vfork)
- 进程控制开发[fork() exec exit _exit wait waitpid 守护进程]
- linux进程控制-exit()
- linux进程控制-exit()
- linux进程控制-exit()
- linux进程控制-exit()
- linux进程控制(fork,getpid,lockf)
- fork进程控制
- linux 进程控制 fork
- 进程编程—fork,getpid,exit,_exit
- 进程编程—fork,getpid,exit,_exit
- 进程编程—fork,getpid,exit
- 进程编程—fork,getpid,exit,_exit
- 学习JAVA应该需要掌握什么?
- 再见亦或是再见
- Selenium模拟光标进入和tab键移动
- java学习之路-----泛型---
- MMORPG服务器架构
- 进程控制(fork和exit)
- bootstrap中的alerts
- 2013百度安卓巴士轻应用4城市巡展沙龙,免费报名啦
- 第一次小小的尝试——舵机控制
- 批处理——获取当前文件夹的TXT文件名和去除掉最后一个文件名
- matlab——连续读入多个文件技巧集合
- matlab——一次多变量命名
- matlab——调用dos命令和文件操作的多种方式
- matlab——数据类型在unix和PC下的不同