Linux系统下 execl 函数特点
来源:互联网 发布:js 判断正整数 编辑:程序博客网 时间:2024/06/07 18:27
Linux系统下execl函数特点:
当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
特点1.前后进程ID未改变,所以我们可以向该ID发送消息,控制一个不相关的可执行文件。
pid_t child_id;
{
pid_t pid;
pid = fork();
if(pid > 0)
{
child_id = pid;
}
else if(pid == 0)
{
execl("./printhello","printhello", (char*)0);
}
}
别的函数中,可以发送:
{
kill(child_id, SIGKILL);
}
这样,就可以退出printhello的执行了。
如果用system,system调用的进程与fork的子进程不再是同一进程,就不能通过这种简便的方式控制到位。
二、用另一个新程序替换了当前进程的正文、数据、堆和栈段。
当前进程的正文都被替换了,那么execl后的语句,即便execl退出了,都不会被执行。
比如:
int main()
{
execl("/bin/ls","ls", (char*)0);
printf("ls files end\n");
}
printf就不会再被调用。
本文来自CSDN博客,转载请标明出处:http://blog.chinaunix.net/space.php?uid=20583479&do=blog&id=1919897
当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
特点1.前后进程ID未改变,所以我们可以向该ID发送消息,控制一个不相关的可执行文件。
pid_t child_id;
{
pid_t pid;
pid = fork();
if(pid > 0)
{
child_id = pid;
}
else if(pid == 0)
{
execl("./printhello","printhello", (char*)0);
}
}
别的函数中,可以发送:
{
kill(child_id, SIGKILL);
}
这样,就可以退出printhello的执行了。
如果用system,system调用的进程与fork的子进程不再是同一进程,就不能通过这种简便的方式控制到位。
二、用另一个新程序替换了当前进程的正文、数据、堆和栈段。
当前进程的正文都被替换了,那么execl后的语句,即便execl退出了,都不会被执行。
比如:
int main()
{
execl("/bin/ls","ls", (char*)0);
printf("ls files end\n");
}
printf就不会再被调用。
本文来自CSDN博客,转载请标明出处:http://blog.chinaunix.net/space.php?uid=20583479&do=blog&id=1919897
- Linux系统下 execl 函数特点
- Linux系统下 execl 函数特点
- Linux系统下execl函数特点
- Linux系统下execl函数族特点
- Linux下execl函数学习
- Linux下execl函数的初步学习
- Linux execl()函数练习
- Linux下execl学习
- linux下execl函数的使用和比较
- Linux 系统下 RAID 详细特点介绍
- linux中的execl函数使用
- execl系列函数特点,以及与system的区别
- linux中system函数 ,execl函数
- 每天学点Linux--(Linux下execl函数的使用)
- linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用
- linux系统编程:exec系列函数(execl,execlp,execle,execv,execvp)使用
- Linux系统的特点
- LINUX系统的特点
- 关于Google analytics中organic和referral的区别
- MD5
- Linux下静态库生成和使用
- Activiti学习资料(记录变量历史信息)
- shell 脚本基础学习
- Linux系统下 execl 函数特点
- 我国向日使馆纵火公民将出狱 中日均提引渡要求-日本使馆-纵火-中国人
- 加密算法说明(Base64、MD5、DES)
- Android启动脚本init.rc
- sql
- ORACLE 直接备份恢复
- .NET完美实现伪静态页面,URLRewriter.dll下载
- Iphone开发基础篇(十三)-ObjectC之键/值编码(KVC)
- log4j:ERROR Attempted to append to closed appender named [CONSOLE].