进程的终止
来源:互联网 发布:断点续传java 编辑:程序博客网 时间:2024/06/05 07:08
有五种方法使进程终止:
1.正常终止
(1)在main函数内执行return语句,这等效于调用exit。
(2)调用exit函数。此函数由ANSI C定义,其操作包括调用各终止处理程序,然后关闭所有标准I/O流等。
(3)调用_exit系统调用函数,此函数由exit调用。
2.异常终止
(1)调用abort。
(2)由一个信号终止。
下面介绍exit和_exit函数。
例子:设计一个程序,要求子进程和父进程都在显示输出一些文字后分别调用exit和_exit函数终止进程。
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include<sys/types.h> 5 int main() 6 { 7 pid_t pid; 8 pid = fork(); 9 if(pid==-1) 10 { 11 perror("创建子进程失败"); 12 exit(0); 13 } 14 else if(pid ==0 ) 15 { 16 printf("测试终止进程的_exit函数!\n"); 17 printf("目前为子进程,这一行我们用缓存!"); 18 _exit(0); 19 } 20 else 21 { 22 printf("测试终止进程的exit函数!\n"); 23 printf("目前为父进程,这一行我们用缓存!"); 24 exit(0); 25 } 26 27 return 0; 28 }
显示结果:
测试终止进程的_exit函数!测试终止进程的exit函数!目前为父进程,这一行我们用缓存!
_exit()函数的作用是直接使进程终止运行,清除其使用的内存空间,并清除其在内核中的各种数据结构;exit()函数则在执行退出之前加了若干道工序,exit函数在调用exit系统之前要查看文件的打开情况,把文件缓冲区中的内容写回文件。exit和_exit函数的区别如下图:
在liunx的标出函数库中,有一种被称作“缓冲I/O”操作,就是对应每一个打开的文件,在内存中都有一片缓冲区,每次读写文件时,都在缓冲区里读取,写入的。每次写入文件时,等满足了一定条件才将缓冲区中的内容一次性写入文件,这种技术大大增加了文件读写的速度。但是,有时没有满足选定条件,数据还只是保存在缓冲区,这时用_exit函数直接结束进程关闭,缓冲去中的数据就会丢失。因此,若想保证数据的完成性,就一定要使用exit函数终止进程。
注:因为"\n"的作用可以修改一下这两句代码看看:
printf("目前为子进程,这一样我们用缓存!\n");
printf("目前为父进程,这一样我们用缓存!\n");
阅读全文
0 0
- 终止进程的内幕
- 终止进程的内幕
- 终止进程的内幕
- 终止进程的内幕
- 终止进程的内幕
- 进程的终止
- 终止进程的内幕
- 进程的终止
- 进程的终止
- 进程的终止
- 进程的终止
- 进程的终止方式
- ubuntu终止进程的方法
- Linux之进程的终止
- 终止本程序的进程
- 进程的终止exit函数
- VC进程的创建、终止
- 终止excel.exe的进程
- 数组排序方法的性能比较(上):注意事项及试验
- word批量删除中英文间的多个空格
- RobotFramework自动化测试框架系统关键字之断言
- 使用UIActivityViewController分享时,限制分享
- Android端通过usb和pc端互传json数据
- 进程的终止
- Masonry介绍与使用实践
- RabbitMQ的简单认识
- Android自定义控件
- lvm简单认识(学新内容会更新)
- Python函数参数传递的*args和**kwargs
- 帮助命令
- sed 常用方式整理
- MyBatis学习笔记(二)