execvp php-fpm reload使用的函数
php重启 本质上是调用
execvp("/usr/local/php/sbin/php-fpm");
execvp就是用一个新的进程把自己替换掉,一个进程一旦调用exec类函数,它本身就"死亡"了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。(不过exec类函数中有的还允许继承环境变量之类的信息。1>exec()函数调用并没有生成新进程,一个进程一旦调用exec函数,它本省就“死亡了”--就好比被鬼上身一样,身体还是你的,但灵魂和思想已经被替换了 --系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一保留的就是进程ID。也就是说,对系统而言,还是同一个进程,不过执行的已经是另外一个程序了
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> char command[];
void main()
{
int rtn;
while() {
printf( ">" );
fgets( command, , stdin );
command[strlen(command)-] = ;
execlp( command, NULL );
printf("execute done\n");
perror( command );
exit( errno );
}
}
gcc -o execvp execvp.c
./execvp
>
此时
root@taek:~# ps aux|grep execvp
root 6158 0.0 0.0 4084 692 pts/2 S+ 14:58 0:00 ./execvp
root 6160 0.0 0.1 12700 1780 pts/3 S+ 14:58 0:00 grep execvp
root@taek:/home/study_c# ./execvp
>./execvp
>
root@taek:~# ps aux|grep execvp
root 6158 0.0 0.0 4084 640 pts/2 S+ 14:58 0:00 [execvp]
root 6162 0.0 0.0 3028 264 pts/3 R+ 14:58 0:00 grep execvp
会发现执行execvp的进程号没有变
最新文章
- Java多线程与并发库高级应用-工具类介绍
- 【网络资料】如何优雅地使用Sublime Text3
- Poj-2250-Compromise
- 简单易用的Rest
- Android开发书籍推荐
- java学习面向对象之父子构造函数初始化
- 【转】C#实现MD5加密
- Loadrunner11.00破解方法
- sweetalert------一个非常萌的alert!
- L2-010 排座位 (25 分) (最短路)
- 007_linux显示一个文件的某几行(中间几行)
- 最课程学员启示录:这么PL的小姐姐你要不要
- Install Greenplum OSS on Ubuntu
- 在arcgis使用python脚本进行字段计算时是如何解决中文问题的
- PCM转MP3工具的封装
- ETL编程模型(场景)
- K2 BPM介绍(2)
- VS2008:Failed to return new Code Element
- MFC 小知识总结二
- Python 数据类型:元组
热门文章
- java NIO编程(转)
- shell中$(( ))、$( )与${ }的区别
- mac windows蓝牙问题
- iOS的block内存管理
- OpenGL ES 光照模型之——环境光照(RenderMonkey测试)
- 比较分析 Spring AOP 和 AspectJ 之间的差别
- Android-fragment-ListView展示-v4支持包
- SMINT:单页网站的免費jQuery插件
- Oracle Client 连接 Server 并通过代码测试连接
- 打开AVD时报&rdquo;Data partition already in use. Changes will not persist!&rdquo;