linux 如何运行一个程序
linux 在运行任何程序之时,都要调用 execve 系统调用函数,然后把你的程序和你给的参数以及环境参数扔给程序的入口函数。
入口函数
php【php 脚本依赖 php 解释器】解释器运行,源码就是 c【真是废话,谁不知道,用我来逼逼半天】入口函数就是 main【如 mysql,redis,php,nodejs,python,memcached,apache 等】
图
该程序的代码,数据容量
测试源码
不管什么语言的源码【不必在意语言】,道理都一样的
class demo
{
public:demo(int age,char *name):m_age(age),m_name(name){}void run();void child();void parent();
public:int m_age;char *m_name;pid_t pid;int num[3];
};void demo::child()
{printf("child run %d&#61;&#61;%d&#61;%dn",getpid(),pid,m_age);while(1){sleep(1);printf("child run %d&#61;%d&#61;%dn",getpid(),pid,m_age);printf("我要访问demo类成员的数据n");printf("demo::m_name&#61;%sn",m_name);printf("demo::m_age&#61;%dn",m_age);printf("demo::pid&#61;%dn",pid);for(int i&#61;0;i<3;i&#43;&#43;){printf("demo::num[%d]&#61;%dn",i,num[i]);}}}void demo::parent()
{printf("parent run %d&#61;%d&#61;%dn",getpid(),pid,m_age);while(1){sleep(1);printf("parent run %d&#61;%d&#61;%dn",getpid(),pid,m_age);printf("我要访问demo类成员的数据n");printf("demo::m_name&#61;%sn",this->m_name);printf("demo::m_age&#61;%dn",this->m_age);printf("demo::pid&#61;%dn",this->pid);for(int i&#61;0;i<3;i&#43;&#43;){printf("demo::num[%d]&#61;%dn",this->num[i]);}}
}
void demo::run()
{cout<<"main process "<0){continue;}else if(pid&#61;&#61;0){m_age&#61;i&#43;1;break;}}}
int main()
{demo *obj &#61; new demo(100,(char*)"jack");obj->run();if(obj->m_age){obj->child();}else{obj->parent();}return 0;
}
运行图解
多进程父子进程间的代码和数据在内存空间的图
只能截个大概
https://learnku.com/articles/45110
更多PHP内容请访问&#xff1a;
八重樱&#xff1a;腾讯T3-T4标准精品PHP架构师教程目录大全&#xff0c;只要你看完保证薪资上升一个台阶&#xff08;持续更新&#xff09;zhuanlan.zhihu.com
以上内容希望帮助到大家&#xff0c;很多PHPer在进阶的时候总会遇到一些问题和瓶颈&#xff0c;业务代码写多了没有方向感&#xff0c;不知道该从那里入手去提升&#xff0c;对此我整理了一些资料&#xff0c;包括但不限于&#xff1a;分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6&#xff0c;laravel&#xff0c;YII2&#xff0c;Redis&#xff0c;Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家&#xff0c;需要的可以加入我的官方群点击此处。