linux系统的进程调用可以有很多方法,今天来介绍下execl()函数。首先我们看例子:
#include #include int main() { execl("/home/carl.ma/hello.exe",NULL); printf("pid=%d\n",getpid()); }
讲解:
execl()创建的进程完全代替远进程。新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
前后进程ID未改变,所以我们可以向该ID发送消息,控制一个不相关的可执行文件。
上面程序中,我在home/Carl。ma的目录下建立了一个hello的程序(该程序由cygwin编译过,可直接运行)利用execl进行调用该程序,运行结果只打印出了hello(因为hello。exe只打印hello)而没有打印出进程ip,这就印证了上面说的该进程完全被新进程代替,而不向下执行。