exec 函数组

来源:互联网 发布:mac如何安装双系统 编辑:程序博客网 时间:2024/05/22 19:15

1. exec是一个函数簇,由6个函数组成,分别是以excl和execv打头的。

 

 执行exec系统调用,一般都是这样,用fork()函数新建立一个进程,然后让进程去执行exec调用。我们知道,在fork()建立新进程之后,父进各与子进程共享代码段,但数据空间是分开的,但父进程会把自己数据空间的内容copy到子进程中去,还有上下文也会copy到子进程中去。而为了提高效率,采用一种写时copy的策略,即创建子进程的时候,并不copy父进程的地址空间,父子进程拥有共同的地址空间,只有当子进程需要写入数据时(如向缓冲区写入数据),这时候会复制地址空间,复制缓冲区到子进程中去。从而父子进程拥有独立的地址空间。而对于fork()之后执行exec后,这种策略能够很好的提高效率,如果一开始就copy,那么exec之后,子进程的数据会被放弃,被新的进程所代替。

 (1) exec是直接用新的进程去代替原来的程序运行,运行完毕之后不回到原先的程序中去。

2.

execl("/bin/echo", "echo", "executed by execl", NULL)中的echo;
execl("/bin/ls", "ls", "/azuo", "-la", (char *)0 )中的ls;
execlp("echo", "echo", "executed by execlp", NULL)中的echo;

 

 

引用: http://blog.csdn.net/cyberrusher/article/details/7253385

0 0
原创粉丝点击