3-3进程exec

pcntl_exec 函数用来执行一个程序,它内部的系统调用是 execve 一般的用法是父进程先创建一个子进程,然后子进程调用这个函数,正文段(代码段)+ 数据段会被新程序替换,它的一些属性会继承父进程,PID并没有发生变化。 execve() executes the program referred to by pathname. This causes the program that is currently being run by the calling process to be replaced with a new program, with newly initialized stack, heap, and (initialized and uninitialized) data segments. pathname must be either a binary executable, or a script starting with a line of the form: #!interpreter [optional-arg] ——execve 示例: demo7.php <?php function showID($str) { $pid = posix_getpid(); fprintf( STDOUT, "%s pid=%d,ppid=%d,gpid=%d,sid=%d,uid=%d,gid=%d\n", $str, $pid, posix_getppid(), posix_getpgrp(), posix_getsid($pid), posix_getuid(), posix_getgid() ); } showID("parent:"); $pid = pcntl_fork(); if (0 == $pid) { pcntl_exec('/usr/bin/php', ['demo2....

2022-03-05 · 王二

3-2进程退出和回收

进程的退出 PHP 进程退出的几种情况 运行到最后一行语句 运行时遇到 return 运行时遇到 exit() 函数的时候 程序异常的时候 进程接收到中断信号 正常结束、异常结束(跟信号有关),不管以何种方式退出,都有一个终止状态码。 僵尸进程 僵尸进程(zombie process):指子进程已结束,但是父进程还没有使用 wait(pcntl_wait)/pcntl_waitpid(waitpid) 来回收。 进程结束时并不会真的退出,还会驻留在内存中,父进程需要通过 wait 「pcntl_wait」函数来获取进程的终止状态码,同时该函数会释放终止进程的内存空间。否则容易造成僵尸进程过多,占用大量内存空间。 wait 函数挂起当前进程的执行直到一个子进程退出或接收到一个信号要求中断当前进程或调用一个信号处理函数。如果一个子进程在调用此函数时已经退出(俗称僵尸进程),此函数立刻返回。子进程使用的所有系统资源将被释放。关于 wait 在您系统上工作的详细规范请查看您系统的 wait(2)手册。 ——pcntl_wait 示例: <?php $pid = pcntl_fork(); if (0 === $pid) { fprintf(STDOUT, "我是子进程,pid = %d,运行完我就没事啦。\n", posix_getpid()); } else { fprintf(STDOUT, "我是父进程,pid = %d。\n", posix_getpid()); sleep(1); while (1) { # code... ; } } 运行结果:...

2022-03-04 · 王二

3-1进程标识与fork

进程标识 一个程序被加载到内存中运行,系统会为这个进程分配相应的标识信息,比如 pid,ppid,uid,euid,pgid,sid,gid,egid… 进程查看命令 pstree 可看出进程间的关系 父子,兄弟; ps -exj ps -aux ps … PID PPID PGID UID TTY STAT TIME COMMAND laradock@3a6c2da5a07b:/var/www$ ps exj PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 24 24 24 pts/1 495 Ss 1000 0:00 bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/larado 24 495 495 24 pts/1 495 R+ 1000 13:37 php demo4.php LC_ALL=en_US.UTF-8 NVM_DIR=/home/laradock/.nvm LS_COLORS=no=00:fi=00: 0 496 496 496 pts/2 1051 Ss 1000 0:00 bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/larado 496 1051 1051 496 pts/2 1051 R+ 1000 0:00 ps exj LC_ALL=en_US....

2022-02-28 · 王二

2-3解释器文件

解释器文件 解释器文件,是一种文本文件,例如 PHP 写的解释器文件 demo.php。 #!/usr/bin/php <?php echo 'Hello World!' chmod u+x demo.php 赋予可执行权限,即可直接以 ./demo.php 执行。 解释器,是可执行文件 ELF,例如 /usr/bin/php。 bash 进程启动过程 bash 进程是如何创建的? 直接在 centos、ubuntu等终端直接登录,由 login 服务开启 bash 进程。 通过网络方式登录到 shell 终端,由 sshd 服务开启 bash 进程。 sshd 服务默认监听 22 端口。 进程观察的几个命令: pstree 查看 Linux 进程间的关系,显示进程树。 pstree -ap: ├─sshd,9408 │ └─sshd,444836 │ └─bash,444875 │ └─pstree,444893 -ap ctrl+c 产生一个中断信号,退出当前终端正在执行的进程。 ctrl+z 把当前台进程丢到后台去暂停。 strace,跟踪系统调用和信号。...

2022-02-18 · 王二

2-2命令行参数与环境参数表

命令行参数 php 两种请求方式: 浏览器请求过程: http://127.0.0.1/demo2.php 浏览器访问 —> tcp 协议请求 —> Apache/Nginx[集成环境]web服务器 —> php-fpm 服务 cli 请求: php demo2.php a b c d cli 是直接在终端调用 php 解释器。 其中 [a,b,c,d] 就叫命令行参数。 环境参数表 当前 bash 进程调用 execve 函数传递进来的参数。 print_r(getenv());

2022-02-17 · 王二

2-1程序与进程

什么是程序? ELF 概念 程序(Program) 一般是指可执行文件,在Linux系统中它按 ELF 格式进行存储,并没有后缀可标识其文件类型,需要通过 file 命令来查看 ELF 文件的具体类型。 ELF 全称是 Executable Linkable Format (可执行与可链接格式),在计算机科学中,是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。 ELF文件种类: EXEC 可执行文件 object code 目标代码文件 shared libraries 共享库文件 REL 可重定位文件 在Linux中为 xx.o xx.a,也称为静态库文件,其中 xx.o 称为目标文件,可被链接器链接成为可执行文件,静态库文件,动态库文件。 示例:php扩展中常用的动态库文件如curl,网络框架库如event.so socket扩展库sockets.so c/c++项目程序员一般引用第三方的库函数都是使用第三方编译好的动态库或是静态库文件 .so, .a。 core dump 核心转储文件 存储进程产生的异常信息。是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写入一个磁盘文件。这种信息往往用于调试。 ELF 文件格式 ELF 文件信息是以 section 或 segment 来存储的。...

2022-02-16 · 王二

1-1课程介绍

课程简介 本课程内容涵盖了 Linux 下 ELF 文件、进程、进程控制原语、进程调度算法、中断信号系统、Linux bash 进程与终端、进程、特权进程、守护进程、会话、进程间通信、UNIX域进程间通信、进程间同步、进程池等知识技术点。 课程测试环境 ubuntu 20.04 php 7.x VScode 课程需要有哪些基础知识 PHP使用1年以上 能独立编译安装PHP和相关扩展 对Linux基础命令有所了解 不浮躁有足够的耐心学习知识 会使用翻译工具,爱百度google的同学^_^ 大其心,容天下之物;虚其心,受天下之善;平其心,论天下之事;潜其心,观天下之理;定其心,应天下之变。 ——— 《呻吟语·卷二·乐集·修身》 如今新兴语言层出不穷,我还有必要学PHP? 本套课程集中于 Linux 下多进程编程知识,虽然使用 PHP 来演示讲课,但在讲解中,会涉及到内核系统调用函数的说明,因为Linux内核系统调用对于所有的编程语言都是通用的。也就是说大家换一门其它编程语言,在本套课程所学到的知识都能完全应用到其它语言中,除非大家换了Linux操作系统,或是Linux操作系统的实现不使用C语言了。这也是本套课程的目标。让大家掌握方法以便能深入的研究 Linux 的 API(C 语言定义好的接口函数)。 go,python,nodejs,java,php rust,… 不论应用使用何种编程语言,底层的系统调用函数完全一致。 例如 PHP 的 pcntl_fork 底层调用的系统函数:fork,clone 课程适合哪些人? 以下列出几点小问题如果您感兴趣,则本套课程将非常适合您! PHP 解释器是什么类型的文件?我怎么查看它?为什么我在终端执行 php index.php 它就执行了?从哪里开始执行的?到哪儿结束呢? elf 文件; 通过 file /usr/bin/php 查看;...

2022-02-15 · 王二

终极复盘

从这本《财富思维觉醒》书中得到的收获或启发都有哪些?(如果竟然没有任何明 显的收获或启发,你认为原因是什么?) 思维在这之前也被启发过很多次了,道理都懂,就是过不好这一生。究其原因,就是纸上谈兵,从来迈不出“行”的那一步。 做好做坏,先行动起来。 对比之前,自己的思维认知上都发生了哪些变化?已经在生活、工作中做出改变的地方有哪些?(如果竟然没有做出任何改变,你认为阻碍你落地行动的最大原因是什么?) 最大的原因可能是这几年创业一直没挣到钱,负债越来越多,疲于奔命。 请根据对本书内容的所思所想、结合自己目前的生活工作状态,为自己制定一份切 实可行的「财富人生」的落地方案吧,这也是你接下里要做出调整、改变、积累、一步步向前不断推进的路书。 找一份稳定的工作,先有收入再说,尽快解决负债。 业余时间学习财富知识、提升专业技能,开发一些能躺着赚钱的副产品。 如果这本书“化身成一个人”站在你的面前,现在你最想对他说些什么? 大佬,带带我。 目前你还有哪些需求——需要被支持、被满足? 怎么能快速解决个人债务问题? 你内心还有其他想说的话吗?什么都可以说~ 不知道想说啥。 课程的终点,财富的起点。 “学”完了,该“习”了。 务必做到: 静下心来,没事的时候就琢磨之前学过的内容。然后要求自己去落地做出来,直到自己平日里的想法和做法,都是符合“富人之心”的。 要把自己训练成一个“对很多人都有可利用价值”的人; 并且有着至少一个可以持续很多年都被人需要、被人喜欢、被人支持和能够重复购买的商品; 直到最终为自己打造出一个自动赚钱机器,成为那个拥有“真正财产”的人。 所谓“法无定法”,只有我们有了好的“心法”,技法才能得以有效施展。犹如电视剧《天 道》(哈哈,我竟然看过电视剧原著《遥远的救世主》)中有说:有道无术、术尚可求。有术无道、止于术。 课程原文下载链接:白手起家-财富思维觉醒-2021版.pdf

2022-02-14 · 王二

第八章 传承篇

财富积累的心法————开源节流。 “节流”是我们当下就可以做的,而“开源”则是后边通过努力才能做到的。 8.1 开源节流 “节流” 要重视节约金钱“能源”、减少铺张浪费。 节流其实在上节课已经聊了不少,只要“尽量清心寡欲”就可以了,把每月结余下来的钱 用于让自己增值、让钱生钱。 钱是我们用生命时间换来的。 金钱是我们拥有的一种可以用来创造更多价值的能量,并且是可以24小时不休息的替我们赚钱。 钱要么用来消费,要么用来投资。 在 创富成功之前,如果可以的话、你必须尽可能的把挣到的钱用作投资,而不是消费。 不管是投资自己的才能提升、还是投资能挣钱的项目,都是正确的用法。 特别注意:还没有学习掌握投资知识之前,建议更多的投资自己的能力提升上,让自己先变 得值钱。 只有这样使用金钱能量,才对得起我们对应付出的生命时间。 “开源” 想方设法增多金钱能量流到我们这里。 这样,我们在“减去必要的”生活消费后,才能有所结余、才能开始积累财产。 除了提升自己的才能、进而影响到更多的人、因此增加主动收入以外。我们还要重视通过股票投资的方式用钱生钱——这也是这个时代最适合我们普通人增加被动收入的方法。 8.2 股权投资 好处 为什么说买股票进行股权投资,是我们普通人最好的投资机会呢? 这是因为在中国有几千万家实名注册的公司,其中只有4000多家做到了成功上市。 这说明了这4000家上市公司是杀出重围的佼佼者、是胜利者、是中国几千万家公司里的超级精英班子。 不夸张的说,中国最好的商业模式、最挣钱的公司,差不多都在这了。 而且,由于上市公司股票交易的出现,我们手里结余的钱,现在竟然可以借鸡生蛋、用钱生钱了。 简而言之: 购买持有了优秀上市公司的股份,就等于是让中国最厉害的精英人才替我们经营公司、为我们效力。而我们躺着啥都不干、就可以坐享其成。 股票投资的底牌是——买股票就是买公司、做股东、分利润。 可以在4000多家上市公司里优中选优,只做各个行业中的优质企业、龙头企业的股东。 其他好处: 可以把我们的时间解放出来,从靠主动工作收入、变成投资产生的被动收入,因此有了更多时间做自己喜欢的事。 可以快速转移资金,从一个经营开始转下的公司、快速转移到另一家经营向上的公司。 可以通过资产的合理配置,不仅能有效降低资金的安全、更能使得投资收益稳定的持续增长。 股票投资——不仅是达到金钱自由的必经之路,更是富人们管理资产的重要方式、财富传承最好的载体。 不夸张的说,如果股票投资存在,那么这将是一个“永生行业”。 而对我们唯一的要求就是:学习看懂一家公司即可。(虽然不容易,但也没那么难) 靠谱吗? 你现在是不是心里面在犯嘀咕呢?有着不少的疑惑?感觉买股票不就是炒股吗?周围的人都在赔钱啊,这玩意真的靠谱吗? 在股市挣不到钱的,绝大多数都是“没搞清楚股票是什么”的人;是没有正儿八经学习过正统投资知识的人、更是没有经得住贪婪诱惑的人;入场买股票带的是“赌博的心”,那结果必然是“赔钱的相”了。 如果一个人完全不知道自己究竟在买什么?为什么要买的时候,而轻易下注、下重注,就是赌博。 投资是一门手艺,是需要懂的投资之道、以及长期学习和实践才能掌握的赚钱技术。 只要我们坚定走投资正道,不投机倒把瞎买瞎卖,赔钱其实也挺不容易的,长期来看只不过是赚多赚少的区别而已。 8.3 神奇的复利 表格的第一列是投资的时长,第一行是投资年复合收益率(“利滚利”模式)。 5% 是银行理财产品的收益率,15% 是我们普通人稍加学习就有机会达到的收益率, 26% 是专业投资者的收益率(只要我们方法对也是有机会达到了)。 第1组数据:单笔投资 如果投资水平能达到年化复合收益率是 26% 的话,10年后本金将会翻10倍。 如果我们只是把钱买成 5% 收益率的银行理财产品,投资20年的收益率为2....

2022-02-12 · 王二

第七章 自由篇

本章做为《财务自由篇》的一个扩展,希望通过“我是如何看待和靠近终极自由的”,能够再给你多一些的帮助和启发。 也祝愿我们每个人都能早日觉悟、早日获得终极自由。 7.1 终极自由 个体终极自由包括三个方面: 身体上的自由 不仅可以去自己想去的任意地方,更是可以自由选择想做的事。自己的生命时间完全归 自己支配,彻底摆脱“不得已而为之”的无奈。 心灵上的自由 不仅克服了欲望上的贪婪,更是找到了自己的本心、知道自己是谁、更知道这辈子要做些什么。也因此开始变得更加追求精神上的享受、变得珍惜当下每一刻。 金钱上的自由 不仅能够很好的解决“生存问题”、不用再出卖生命时间去换钱。更是可以让我们更有信 心、更有底气的去追求想要实现的梦想。 其实早日实现金钱自由,还有更深刻的一层意义: 可以让我们“多活”很多年。 试想一下:老李在单位干到60岁才退休,虽然他并不喜欢所做的工作,但还是任劳任怨的坚 持了几十年。而老王自己创业30岁就实现财务自由,从此不再需要担心生存问题,每天都是 在做着他自己喜欢、很有激情的事情,真正的为自己而活。 从“为自己而活的时间”角度而言,老王是不是比老李多活了几十年?! 你是老李还是老王呢? 我是隔壁老王 ;-) 其实想要达到真正的自由,说难也难、说容易也容易。 难的是,可能需要你改变多年形成的根深蒂固的价值观、和消费观。 容易的是,一旦你能有所认同、并下狠心要改变的时候、剩下的就是参考我说的去做——在创富的过程中一并调整自己的消费习惯,那么是很容易实现身心自由的。 7.2 自行觉悟 要想尽早获得终极自由,就必须琢磨清楚三个概念:“独立思考、清心寡欲、知足常乐”。然后再——想办法做到! 独立思考 脱离“羊群”、不能再被别“人”带着或赶着走了。 比如说:大众都在做什么、你也跟着做什么。大家最近都在关心什么、讨论什么,你也跟着节奏一块凑热闹。 如果你一直随波逐流、人云亦云,没有自己的长远规划、不为自己的理想目标而努力, 你就只能“被困在永恒的当下”。 当你开始不断的追问、拷问自己的时候,才是你真正觉醒的时候。 也只有你开始清醒过来,开始有了你自己的深入思考、有了更长远的想法、更有针对性的行动,进而才有可能得到你想要的结果,你才有机会——重获新生。 独立思考的目的是要——学会观察思考事物的多面性,这样才不会以 偏概全、或是被别有用心的人带偏了,或是被自己狭窄的认知给限制了一生。 清心寡欲 贪欲是导致我们大多数人“不自由、烦恼、痛苦”的主因。 也就是佛家说的五毒——“贪嗔痴慢疑”把我们的本心给屏障了、让我们看不到真相,所以才会迷失自我、浑浑噩噩的活着。 看看自己、再看看周围的人吧,是不是每天都活在: 攀比贪婪、焦虑恐慌、抱怨埋怨吐槽、愚痴是非不分、傲慢自大谁也不服”的状态里? 却又不自知、不自省,更不接受自己是这样的人,对吗? 甚至还会找上一大堆理由来掩饰自己的“无明”,比如: 凭啥他们有,我就没有!我又不比他们差,别给我讲什么大道理,反正我是一定要买的! 凭啥他的比我的新、比我的好、比我有的还多啊!不行,我得超过他! 他不就是运气好、命好吗?他能力还没我强呢!给我个机会我一点都不会比他差! 别人不都这样吗?我买房、买车、买点轻奢品犒劳一下自己的努力,这不是很正 常? 不拼不行啊,以后花钱的地方多着呢!真心不敢停啊! …… 当一个人这么想的话,是不可能自由的,因为他 已经被贪欲困在永恒的当下了!生活中 确实有不少人已经资产千万、亿万了,可仍然觉得不够、没有安全感,每天就活在挣钱、挣钱、挣钱的状态里出不来。...

2022-02-11 · 王二