在Linux操作系统中进行C语言代码开发,必须对Linux系统有足够的了解,包括代码的运行机制、内存分配机制、系统调用和库函数等。
1、C语言代码的运行机制
Linux中的程序是一个在磁盘上的可执行文件,内核调用一个exec函数将这个可执行文件调入到存储器中然后执行,这个程序的执行实例被称为进程,在Linux中每个进程都对应一个唯一的非负数字标识符,称为进程ID。
对于一个进程而言,其有8种方式可以返回使得其终止,对于这些方式的说明如下:
- 1) 在main函数中使用return语句返回
- 2) 调用exit函数终止进程
- 3) 调用_exit_或者_Exit函数终止进程
- 4) 调用一个线程从其启动例程返回
- 5) 最后一个线程调用了prhread_exit函数
- 6) 调用abort函数
- 7) 接到一个信号并且终止
- 8) 最后一个线程对取消请求做出了响应
这些方式的前5种为正常终止一个进程,后三种是异常终止,如1是Linux操作系统启动和终止一个应用程序的示意图。
图1 Linux下的代码运行
总之,在Linux操作系统中,内核使程序执行的唯一方法是调用一个车exec函数,进程自愿终止的唯一方法是显式或者隐式地调用_exit或者_Exit,又或者使用一个外部信号来使得该进程终止。
通常来说,在Linux中运行一个用户自行设计的可执行文件的流程可以简单表达,如图2所示。
图2 用户程序的运行过程