5. 进程相关的函数
C 语言标准库中提供和一些进程相关的函数,比如 exit 和 abort 用来结束当前进程,system 用来使用Shell 开启新的进程等。这些函数都在 stdlib.h 中声明。
头文件
stdlib.h
进程相关的函数
函数
说明
void exit(int status);以
status 作为程序返回值正常退出进程。这是一个永不返回的函数。void abort(void);以异常方式退出进程。这是一个永不返回的函数。也不会调用 atexit注册的回调函数。
int atexit(void (*function)(void));注册程序正常退出时的回调函数。
int system(const char *command);调用
Shell 启动新命令,并等待命令执行完毕后返回,失败返回 -1,启动 Shell 失败返回 127,成功则返回命令的退出值。示例:
// filename: mysystem.c
#include <stdio.h>
#include <stdlib.h>
void this_process_exit(void) {
printf("进程即将退出!\n");
}
int main(int argc, char * argv[]) {
int ret_value;
// 注册程序退出时的回调函数
atexit(this_process_exit);
// 调用 Linux/UNIX 命令创建 文件夹 mydocs。
ret_value = system("mkdir mydocs");
printf("system函数调用的返回值是: %d\n", ret_value);
exit(0);
printf("程序在此之前退出,这一行不会打印。\n");
return 0;
}
编译和运行结果如下:
weimingze@mzstudio:~$ ls
mysystem mysystem.c
weimingze@mzstudio:~$ gcc -o mysystem mysystem.c
weimingze@mzstudio:~$ ./mysystem
system函数调用的返回值是: 0
进程即将退出!
weimingze@mzstudio:~$ ls
mysystem mysystem.c mydocs
从运行结果可以看出:
system函数创建文件夹mydocs成功了- 调用
exit函数后没有返回到主函数。 this_process_exit函数在程序退出前被调用了。
实验:
将上述程序中的 exit(0); 改为 abort();。重新编译并查看程序的运行结果,看有啥变化。