进程的建立
进程:进程是正在执行的程序,包括程序代码和数据其中数据包含程序变量数据、外部数据和程序堆栈等。
进程建立:
#include <unistd.h> //Linux系统库
pid_t fork(void); //建立进程的声明
/*
如果fork()调用成功,就会使内核建立一个与其创建者一样的程序。
它返回一个pid_t 类型的值pid。pid 被用来区分父进程和子进程。在父进程中,pid 被置为一个非0 的正整数;在子进程中,pid 被置为0。
*/
进程的运行
exec 系列中的系统调用都完成相同的功能,它们把一个新程序装入调用进程的内存空间,来改变调用进程的执行代码,从而形成新进程。如果exec 调用成功,调用进程将被覆盖,然后从新程序的入口开始执行。这样就产生了一个新的进程,但是它的进程标识符与调用进程相同。
#include<unistd.h>
int execl( const char *path, const char *arg, ...);
int execlp( const char *file, const char *arg, ...);
int execle( const char *path, const char *arg , ..., char* const envp[]);
int execv( const char *path, char *const argv[]);
int execvp( const char *file, char *const argv[]);
/*
path参数指明运行文件的有效路径名
file参数只包含文件名,会在PATH环境变量中搜索路径
arg是运行的文件包含的参数注意需要以一个NULL指针来标识参数表的结尾
ex:execl(“/bin/ls”,”ls”,”-l”,NULL);
execv("/bin/ls",argv);
*/