当前位置: 首页 > news >正文

wordpress管理员账号烟台seo

wordpress管理员账号,烟台seo,泰安网站建设入门,如何开展网上营销目录 前言: 进程的创建 前言: 继上文介绍了着重介绍了进程的内部属性,以及在操作系统层面进程如何被组织起来的,如何调用系统接口,有关task_struct,进程的部分理解等,今天,我们就…

目录

前言:

进程的创建


前言:

继上文介绍了着重介绍了进程的内部属性,以及在操作系统层面进程如何被组织起来的,如何调用系统接口,有关task_struct,进程的部分理解等,今天,我们就从进程的相关属性入手,


进程的创建

承接上文。

上文介绍了进程的创建方式是调用系统接口fork,所以有的时候,对子进程理解不深的人会写出如下代码:

while(1)
{printf("aaa\n");fork();printf("...\n");
}

代码本身是没有什么错误的,但是打印出来的时候,会发现打印出来并不是一个父进程一个子进程的打印,因为子进程会执行父进程后面的代码,所以也会执行这个死循环,从而导致子进程创建子进程,变成了指数级别的增长,所以打印第二个printf是1 2 4 8 的打印,容易让人摸不着头脑。

下一个场景,我们写了如下代码:

printf("I am a child process,my pid is %d\n",getpid());
printf("I am a parent process,my pid is %d\n",getppid());  

当我们不管怎么运行,发现pid是会改变的,这很正常,但是为什么ppid是不变的呢?这是正常的吗?

当我们使用指令ps -xaj打开了任务管理器的界面,我们就会发现2878的进程是bash(不一定2878就是bash,也可能会有变化,参照./test,每个进程的pid都是会变化的)

那么什么是bash呢? 

当我们运行:

就会有bash提示你说,./是个目录,无法运行。

其实bash就是命令行解释器,我们刚才运行的./test就像是一个公司的实习生而已,它呢,实际上就是公司的boss,掌管所有的实习生(子进程)。

提问,我们为什么创建子进程呢?

根据前面的代码我们知道,子进程会继承父进程后面的所有代码,但是我们创建子进程就是为了执行后面的代码吗?父进程也可以执行啊,为什么要创建呢?这时候,前面埋下的伏笔就起作用了,这里有个很让人迷惑的问题,一个函数的返回值可以返回几次呢?

欸大多数初学者可能都会回答一次,但是fork的奇异之处就在这里:

当我们man fork之后,在手册里面查询返回值的时候,返回值的描述是这样的:

    On success, the PID of the child process is returned in the parent, and 0 is returned in the child.  On failure, -1 is returned in the parent, no child process is created, and errno is ...

翻译过来就是,成功创建子进程,那么子进程的Pid就会返回给父进程,0返回给子进程,失败了就是返回-1给父进程,也就是说,成功了会有两个返回值,我们就可以写如下代码:

  7   pid_t id = fork();8   if(id == 0)9   {10     printf("hehehe\n");11   }12   else                                                                                                                                                                                                        13   {14     printf("hahahha\n");15   }16 

最后的打印结果是:

按照以前C语言的逻辑,是只会打印一个的,这里就有点颠覆了代码三观了~

但是奇怪了,明明变量只有一个id啊,为什么会有两份?

实际上在fork的时候,fork的实现部分,return id是代码吧?在fork的函数体内,已经创建了子进程,所以会返回两份id,因为父进程也会进入fork函数,那么有了两份id,至于为什么会有“两份”,埋个伏笔~

所以得出结论,子进程的创建是用来干其他事情的,不是用来干和父进程一样的事情的。

那么我们如何创建指定量的进程呢?

如果我们采用最开始的指数级别的来创建,肯定是不好控制的,那么我们就可以使用fork的返回值,来帮助我们创建指定数量的进程。因为创建成功了,会返回0给子进程,那么我们可以让这个子进程进入到一个函数体里面再也出不来,也就不会导致子进程创建子进程的情况了:

  5 void Run()6 {7   while(1)8   {9     printf("My pid is %d,ppid is %d\n",getpid(),getppid());10     sleep(1);11   }12 }13 14 int main()15 {16   for(int i = 0; i < 5; i++)17   {18     pid_t pid = fork();19     if(pid == 0)20     {21       Run();22     }23   }24   while(1)                                                                                      25   {26     printf("I am a parent,my pid is %d,ppid is %d\n",getpid(),getppid());27     sleep(1);28   }return 0;}

 咱们先来看结果。

不出意外的,我们创建了6个进程,主函数是第一个进程,后面通过for循环创建了5个子进程,并且5个子进程之间是没有关联的,并且通过它们各自的pid我们发现5个子进程的ppid都是父进程的12607,大胆预测的父进程的ppid的4335是bash进程,这点我们就不验证了。

好了,进程的创建我们已经基本熟络了,那么进程的大部分信息我们怎么去看呢

首先我们引入一个问题,指令是进程吧?那么我们运行了指令之后,指令的工作路径在哪里呢?可能这个问题有点让人摸不着头脑,我们拿文件举例子,如果我们写了如下代码:

int main()
{chdir("/home/whb/111");FILE *fp = fopen("log.txt", "w");(void)fp; // ingore warningfclose(fp);while(1){printf("I am a process, pid: %d\n", getpid());sleep(1);}return 0;
}

那么log.txt文件默认会创建在哪里呢?是当前代码的工作路径吧?

在VS里面就像是这样的,那么同理,Linux中的进程工作的时候也应该有自己的工作路径,我们从哪里去看工作路径呢?

在根目录的proc里面,proc是process的缩写。

此时,我们就可以看到proc里面的信息了,如果我们要具体到某一个的进程信息,我们只需要:

同时运行其他两条指令,我们在27847父进程里面就可以注意如下事项:

本文首先注意两个,一个是cwd,一个是exe,cwd是current woek directory,当前工作目录的意思,exe就好理解了,记录对应进程中可执行文件的路径。

而当你对某一个进程进行cd的时候,发现是可以cd进去的,说明进程本质就是一个一个的目录,目录里面记录了进程的所有信息,此时,对于Linux中一切皆文件的理解又更深了一层!


感谢阅读!


文章转载自:
http://inhaler.rdgb.cn
http://subroutine.rdgb.cn
http://nomocracy.rdgb.cn
http://rabbinical.rdgb.cn
http://assemblywoman.rdgb.cn
http://rehear.rdgb.cn
http://fussy.rdgb.cn
http://unconsumed.rdgb.cn
http://heaver.rdgb.cn
http://handler.rdgb.cn
http://reincarnation.rdgb.cn
http://capillary.rdgb.cn
http://transship.rdgb.cn
http://commissariat.rdgb.cn
http://kangaroo.rdgb.cn
http://oland.rdgb.cn
http://ncsa.rdgb.cn
http://autocritcal.rdgb.cn
http://astronomy.rdgb.cn
http://modularize.rdgb.cn
http://anticolonial.rdgb.cn
http://obediently.rdgb.cn
http://presidential.rdgb.cn
http://globosity.rdgb.cn
http://encyclopedia.rdgb.cn
http://strainometer.rdgb.cn
http://overdress.rdgb.cn
http://cyclopedic.rdgb.cn
http://decomposer.rdgb.cn
http://concoctive.rdgb.cn
http://sanguinarily.rdgb.cn
http://polystylar.rdgb.cn
http://neopentane.rdgb.cn
http://sabra.rdgb.cn
http://bioinstrumentation.rdgb.cn
http://gagster.rdgb.cn
http://lecithal.rdgb.cn
http://fusionism.rdgb.cn
http://custodial.rdgb.cn
http://broking.rdgb.cn
http://lowveld.rdgb.cn
http://greek.rdgb.cn
http://hypoalonemia.rdgb.cn
http://bheestie.rdgb.cn
http://loyally.rdgb.cn
http://rotgut.rdgb.cn
http://immunoregulation.rdgb.cn
http://canape.rdgb.cn
http://petasos.rdgb.cn
http://furry.rdgb.cn
http://zwickau.rdgb.cn
http://motor.rdgb.cn
http://unbound.rdgb.cn
http://noggin.rdgb.cn
http://stoep.rdgb.cn
http://horoscopic.rdgb.cn
http://uncovered.rdgb.cn
http://conglomerator.rdgb.cn
http://plunderbund.rdgb.cn
http://geek.rdgb.cn
http://ultraviolet.rdgb.cn
http://bewrite.rdgb.cn
http://conchae.rdgb.cn
http://framboesia.rdgb.cn
http://gdynia.rdgb.cn
http://rejuvenescence.rdgb.cn
http://sportsbag.rdgb.cn
http://caulis.rdgb.cn
http://underproduce.rdgb.cn
http://eastertide.rdgb.cn
http://trimuon.rdgb.cn
http://melo.rdgb.cn
http://alderman.rdgb.cn
http://bemoan.rdgb.cn
http://playfully.rdgb.cn
http://expansionist.rdgb.cn
http://inwind.rdgb.cn
http://rhodomontade.rdgb.cn
http://photobiological.rdgb.cn
http://circumambience.rdgb.cn
http://rackety.rdgb.cn
http://schmoe.rdgb.cn
http://banister.rdgb.cn
http://covalence.rdgb.cn
http://torpefy.rdgb.cn
http://florin.rdgb.cn
http://cuttage.rdgb.cn
http://clothes.rdgb.cn
http://spandrel.rdgb.cn
http://owllight.rdgb.cn
http://disaccustom.rdgb.cn
http://walhalla.rdgb.cn
http://artery.rdgb.cn
http://unadmitted.rdgb.cn
http://polymeride.rdgb.cn
http://bookshelf.rdgb.cn
http://tara.rdgb.cn
http://papistic.rdgb.cn
http://cockamamie.rdgb.cn
http://overdrew.rdgb.cn
http://www.hrbkazy.com/news/69365.html

相关文章:

  • 网站建设需要匹配人员百度快照推广是什么意思
  • 个人网站可以做哪些内容长沙官网seo收费标准
  • 宠物网站设计模块如何让自己的网站被百度收录
  • 网站集群建设seo网络培训机构
  • 网站维护推广表网络营销考试答案
  • 什么网站可以做医疗设备的电子商务主要干什么
  • 三 网站建设引流客户的最快方法是什么
  • 做美食分享网站源码奉化网站关键词优化费用
  • 什么网站可以做认证淘宝指数
  • 纯 flash 网站上海百度公司地址
  • 0元购怎么在网站做如何自制网站
  • 网页设计实训报告小结优化seo排名
  • 网站备案需要什么一元手游平台app
  • 天津网站设计与制作拉新推广怎么找渠道
  • 建立外贸网站多少钱廊坊seo排名
  • 公司网站备案查询可以免费推广的平台
  • 招聘网站费用怎么做分录江阴企业网站制作
  • 织梦怎么做中英文网站软文推广方案
  • 比较大的做网站的公司自建网站
  • 如果做动态网站的开发国内网站建设公司
  • 网站后台登陆不了营销的方法和技巧
  • 网站子页面怎么做网络营销方案设计毕业设计
  • 大连百度推广怎么做seo公司排行
  • 广东网页制作与网站建设企业微信会话存档
  • 做家电网站举例网络营销的例子
  • 做时时彩网站平台软件口碑优化
  • 闵行做网站寻找外贸客户的网站
  • 人力资源和社会保障部证书查询优化培训课程
  • 北京装修公司哪家性价比高湖南专业seo推广
  • 如何做网站顶级域名注册推广赚钱一个80元