2.3 进程控制之exec函数族】的更多相关文章

学习目标:学习使用exec函数族的重要的几个函数  一.引言 进程通过exec函数根据指定的文件名或目录名执行另一个可执行文件,当进程调用exec函数时,该进程的数据段.代码段和堆栈段完全被新程序替换,从新程序的启动例程开始执行.但调用exec并不创建新进程,所以调用exec前后该进程的id并未改变. 1. 函数说明 头文件:#include <unistd.h> 函数原型: int execl(const char *path, const char *arg, ...); int exec…
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行.因为调用exec并不创建新进程,所以前后的进程ID并未改变.exec只是用一个全新的程序替换了当前进程的正文.数据.堆和栈段. 有6种不同的exec函数可供使用,它们常常被统称为exec函数.这些exec函数使得UNIX进程控制原语更加完善.用fork可以创建新进程,用exec可以执行新程序.exit函数和两个wait函…
进程的几种终止方式 (1)正常退出 从main函数返回[return] 调用exit 调用_exit/_Exit (2)异常退出 调用abort   产生SIGABOUT信号 由信号终止  Ctrl+C [SIGINT] ...(并不完全, 如return/pthread_exit等) 测试[exit/_exit] //尝试查看该程序的打印输出 int main() { cout << "In main, pid = " << getpid(); //去掉了en…
lienhua342014-10-07 在文档“进程控制三部曲”中,我们提到 fork 函数创建子进程之后,通常都会调用 exec 函数来执行一个新程序.调用 exec 函数之后,该进程就将执行的程序替换为新的程序,而新的程序则从 main 函数开始执行. UNIX 提供了 6 种不同的 exec 函数供我们使用.它们的原型如下所示, #include <unistd.h>int execl(const char *pathname, const char *arg0, ... /* (cha…
在 Windows 平台下,我们能够通过双击运行可运行程序,让这个可运行程序成为一个进程.而在 Linux 平台.我们能够通过 ./ 运行,让一个可运行程序成为一个进程. 可是.假设我们本来就执行着一个程序(进程).我们怎样在这个进程内部启动一个外部程序,由内核将这个外部程序读入内存.使其执行起来成为一个进程呢?这里我们通过 exec 函数族实现. exec 函数族.顾名思义,就是一簇函数,在 Linux 中,并不存在 exec() 函数,exec 指的是一组函数,一共同拥有 6 个: [cpp…
fork和vfork分析: 在fork还没有实现copy on write之前,Unix设计者很关心fork之后立即执行exec所造成的地址空间浪费,也就是拷贝进程地址空间时的效率问题,所以引入vfork系统调用. vfork有个限制,子进程必须立刻执行_exit或者exec函数. 即使fork实现了copy on write,效率也没有vfork高,但是现在已经不推荐使用vfork了,因为几乎每一个vfork的实现,都或多或少存在一定的问题. fork:子进程拷贝父进程的数据段:vfork:子…
原文:http://www.cnblogs.com/hnrainll/archive/2011/07/23/2114854.html 1.简介 在Linux中,并不存在exec()函数,exec指的是一组函数,一共有6个,分别是: #include <unistd.h>   extern char **environ;   int execl(const char *path, const char *arg, ...); int execlp(const char *file, const…
2015.3.2 进程和程序有三点不同:1,存在位置不同,程序:硬盘,磁盘.进程:内存2. 程序是静态的,进程是动态的 执行./a.out -->bash->bash程序调用fork()-->子进程将./a.out后面的参数存放到argv[].然后调用exec处理这些参数,最后子进程退出,光标闪动 进程进入停止态:1,调试的时候,2,将前台变成后台运行 线程:每个程序加载到内存后可以对应创建一个或多个顺序执行流(能使进程在同一时刻做不止一件事,每个线程处理各自独立的任务) 回调函数 同步…
进程的几种终止方式(Termination) (1)正常退出 从main函数返回[return] 调用exit 调用_exit或者_Exit 最后一个线程从其启动处返回 从最后一个线程调用pthread_exit (最后两点见后面博客) (2)异常退出 调用abort   产生SIGABOUT信号 由信号终止  Ctrl+C [SIGINT] 最后一个线程对取消请求做出响应 从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构:exit…
一. 环境变量     应用程序在执行的时候,可能需要获取系统的环境变量,从而执行一些相应的操作.     在linux中有两种方法获取环境变量,分述如下.   1.通过main函数的参数获取环境变量      main函数的多种定义方式: int main(void); int main(int argc, char* argv[ ]); int main(int argc, char* argv[ ], char* env[ ] )     方式1和方式2比较常见,下面介绍一下方式3: 第三…