个人做网站有什么用花卉电子商务网站开发

张小明 2026/3/13 13:40:15
个人做网站有什么用,花卉电子商务网站开发,聊城建网站服务,爱拍怎么创建wordpress本章目标 1.getpid与getppid 2.重谈查看进程 3.创建进程 1.getpid与getppid 在上一篇文章,我们提到了如何通过系统调用获取当前进程的pid 在linux操作系统当中进程的创建都是通过父进程创建子进程的方式实现的 那么为了区分父子进程,在一个进程中除了标识当前进程的pid还要包含…本章目标1.getpid与getppid2.重谈查看进程3.创建进程1.getpid与getppid在上一篇文章,我们提到了如何通过系统调用获取当前进程的pid在linux操作系统当中进程的创建都是通过父进程创建子进程的方式实现的那么为了区分父子进程,在一个进程中除了标识当前进程的pid还要包含父进程的pidgetppid这个系统调用的工作原理是通过当前进程中指向父进程的task_struct指针间接拿到父进程的pid.我们打开上一次的代码,我们通过打监控的方式看到了当前进程的pid,我们能够看到当前进程的pid和ppid.那么对于test进程,pid我们很明确那么ppid是谁?我们重新启动进程,在这里补充一个问题.我们pid是进程启动的时候系统给分配的.这个pid的个数在操作系统中,我们可以理解为是一个全局变量.一旦超出这个数它就会回绕.因为每次启动都会分配一个pid,它也就是线性递增的回到我们当前的话题.我们重新拿到了这个进程的pid在,我们看到当前test进程的test的ppid,我们通过监控可以看到,这个进程的父进程是bash,也就是我们的命令行解释器.这也就印证了我们前面的说法,我们的进程在linux操作系统当中是通过父进程创建子进程的方式创建出来的.我那现在演示时下ppid的用法.它的使用方法是与getpid的方法类似的2.重谈查看进程在之前的我们讨论过我们可以直接查看根目录的中proc目录下的内容.这里面放着的就是当前操作系统下所以的实时进程一旦进程创建,我们就会在这个目录下创建一个当前进程pid为名字的目录.里面放着的就是我们当前进程的pcb也就是task_struct的内容.我们在这里要重新讨论一个问题.我们之前有关于文件操作的时候我们fopen以写的时候打开然后给一个在当前目录下的没有的文件名.这个函数是如何知道我们我们要在这个工作目录下创建该文件.谁告诉它的它实际上是从当前进程的pcb里面拿的每一个进程在创建的时候,会将它所启动的位置,也就是当前进程的exe文件所在的目录记录在这个pcb中,也就是这个cwd这个链接文件.我们在调用fopen这个函数,如果我们没有指定这个路径的话,会用这个pcb中的cwd给的路径去拼接这个文件名去创建.那么我们该如何去证明这个问题,我们可以通过一个系统调用去修改当前进程的cwdchdir这个系统调用有一个参数,我们可以给它一个相对路径或者说是绝对路径,然后去修改当前进程的cwd.我们现在演示以下这是没使用系统调用前的状态,一切按照我们的想法,这个文件创建在这个和这个二进制可执行文件在一起的地方了.现在我们系统调用去修改工作路径.但要注意权限问题.我们不能直接扔根目录里面,我们只是普通用户.当我们通过系统调用去修改当前进程的工作路径的时候,它创建在我们所指定的目录,也就是我们当前用户的家目录当中.3.创建进程在前面我们聊过在Linux中创建新进程的方式是通过父进程创建子进程的方式去进程创建的.本质上是操作系统当中多了一个进程.而创建进程我们也需要通过系统调用.我们先简单介绍下这个系统调用.先使用以下,然后再介绍下它的原理再Linux中,操作系统给我提供的系统调用是fork,这个函数不需要我们去传参数.但是它的返回值是有很大的说道的.我们下面演示以下我们可以看到我们在最开始执行程序的时候最开始只有一个执行流104370再经过fork之后有了两个执行流,这就是为了一个代码执行了两遍而两边的结果却是不同的.在这里面我们能够得出一个结论.在进程fork之后,父进程与子进程是共享的fork之后代码的.但是我们创建子进程的时候,创建它的目的就是为了完成任务.而父进程去做其他的东西.这个时候我们就需要通过fork之后的返回值进行父子分流.我们可以通过man手册去查看fork的返回值详细说明,有时间的可以看以下,下面我们直接演示,看文字过于晦涩.我先不解释我们直接看结果fork的返回值一共有三种情况当子进程创建成功的时候fork的返回值分为两种它会将子进程的pid返回给父进程把0给子进程当子进程创建失败的情况下它会给父进程返回-1在这里就引出了三个问题1.为什么要给子进程返回0,给父进程返回子进程的pid2.fork,它是一个函数,它是如何做到一次调用,返回两次的.3.一个id 它是如何接受两个不同的返回值,而且不冲突的.1.为什么要给子进程返回0,给父进程返回子进程的pid关于这个问题,我们要先拿现实世界中的例子进行举例在现实世界中我们父亲与孩子的比例是1比多,对于孩子来说,它只需要管父亲叫爹,而父亲为了区分孩子就需要通过他们的名字来进行区分回到我们技术上.子进程只需要知道父亲是谁就行,所以给个0父进程为了将子进程进行区分需要知道每一个子进程是谁,也就是需要将子进程的pid给父进程,pid是一个进程的唯一标识.获得了pid也就能够将子进程进行区分了2.fork,它是一个函数,它是如何做到一次调用,返回两次的.关于这个问题,我们同样先引出一个问题.在一个函数内部,再它的return 之前,它的核心功能一般来说就已经实现完了.同样的回到我们fork函数,它的目的是为了创建子进程,再进行将pid进行返回前,它的父子分流也就做好,在前面我也提到过,对于父子进程来说,它们的代码时共享的,着就是时说明这个return,会被父子执行流执行两次.着也就说说明fork一个函数,通过一次系统调用,返回两次的原因3.一个id 它是如何接受两个不同的返回值,而且不冲突的.这个问题,对于现在我们的知识储备来说,可能不够,我先简单叙述下,有关于这其中的细节会在后面的进程地址空间的章节中详解在我们之前实现stl容器中的string的时候提到了一种技术叫做引用计数的写实拷贝在stirng只是浅拷贝或者时只读的情况,我们让两个不同的容器对象指向同一块空间在一个对象进行修改的时候,我们再对他重新开辟空间,进行深拷贝回到我们现在的流程我在这篇文章中反复提及到在Linux中创造一个进程,是通过父进程创建子进程的方式实现的本质上在操作系统当中多出了一个进程而子进程创建的时候是以父进程为蓝本的.fork会对它重新创建一个pcb或者叫task_struct,大部分属性都继承自父进程,但有些属性仍然需要进行修改pid或者ppid我们今天简单理解将这一块认为只是简单的代码与数据构成的因为是继承下来的子进程应该指向和父进程相同的代码与数据.因为id是一个变量,它会在接受fork返回值的时候进行修改.这个时候操作系统就会子进程重新在内存中开辟一块空间.让它修改的地方指向新开辟的空间.被他修改的id也就保存在这块区域了大白话说就是数据块被分开了,id被分别的保存到两个不同的内存块当中.这样也就说明了一个id,它是如和接受两个不同的返回值,而且不冲突.
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

六站合一的应用场景做网站用的产品展示横幅

第一章:Agent 服务的 Docker 环境隔离在构建分布式监控或自动化运维系统时,Agent 服务通常需要部署在多样化的主机环境中。为确保运行一致性与依赖隔离,Docker 成为首选部署方案。通过容器化封装,Agent 可在不同操作系统中保持行为…

张小明 2026/3/5 3:09:45 网站建设

建设银行网站用户名湛江制作网站企业

跨大西洋合作:英加联手打造新型国际供应链,加速“绿色AI”创新一项新的英国-加拿大技术合作伙伴关系正在致力于研发一种先进的光子引擎。该技术旨在使全球的人工智能数据中心运行速度更快、效率更高,并更具可持续性。这项合作是今年早些时候签…

张小明 2026/3/5 3:05:38 网站建设

建设银行官方网站手机版下载安装手机网页开发

从零实现基于WS2812B的夜灯模式:手把手教你写一个可靠的驱动程序你有没有试过半夜醒来,被刺眼的灯光“闪”得睁不开眼?又或者想为孩子设计一盏温柔不伤眼的小夜灯,却发现市面上的产品不是太亮就是颜色生硬?其实&#x…

张小明 2026/3/5 3:05:39 网站建设

手机网站域名哪里注册时间广州建设工程安全质量监督网站

Python并发编程:线程、进程与调度的全面指南 在Python编程中,并发编程是一个重要的领域,它可以帮助我们更高效地利用系统资源,提高程序的性能。本文将深入探讨Python中的线程、进程以及相关的调度和守护进程等概念,并通过具体的代码示例进行详细讲解。 线程编程 线程是…

张小明 2026/3/5 3:05:41 网站建设

奉贤做网站的2019年 dede网站

Q9:大模型的分词器和传统的中文分词有什么区别?对于一个指定的词表,一句话是不是只有一种唯一的分词方式? 传统的中文分词,是根据语法和语义规则,将连续的汉字序列切分成有意义的、独立的词汇单位。 使用字…

张小明 2026/3/5 3:05:48 网站建设

php下载站源码教育公司网站建设方案

UNIX系统编程:进程与终端I/O详解 1. 进程相关函数 在UNIX系统中,进程管理是非常重要的一部分,涉及到多个关键函数。 1.1 vfork函数 大多数实现虚拟内存的UNIX版本都提供了 vfork 函数。与 fork 不同, vfork 创建子进程时不会复制调用进程的整个地址空间,子进程会…

张小明 2026/3/5 3:05:48 网站建设