为什么要编译
我们都知道计算机世界里面只有0101这些二进制文件才是机器能够识别的,CPU通过控制器分别从指令寄存器和数据寄存器中获取数据,并根据指令来进行下一步运算和操作。然而,计算机发展到现在,高级语言层出不穷,往往要经过相应的编译来映射到下一级的语言,再到汇编语言,最后到可执行文件格式。
编译过程
结合上面的图,我们看一个例子:
我们先定义一个create_process函数,用来fork一个子进程,父进程返回子进程的id,在子进程中通过execvp来执行该函数调用。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
extern int create_process (char* program, char** arg_list);
int create_process (char* program, char** arg_list)
{
pid_t child_pid;
child_pid = fork ();
if (child_pid != 0)
return child_pid;
else {
execvp