首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程环境那些事儿

main 函数与进程终止 众所周知,main 函数为 unix like 系统上可执行文件的"入口",然而这个入口并不是指链接器设置的程序起始地址,后者通常是一个启动例程,它从内核取得命令行参数和环境变量值后...最后需要说明的是,对环境变量的更改只对当前进程及之后启动的子进程生效,不对父进程及之前启动的子进程产生影响。...新值长度大于旧值,在堆上分配新字符串空间并赋值,更新环境变量表中的指针使之指向新分配的字符串 新增环境变量 第一次新增环境变量,在堆上分配新的环境变量表,将原来的环境变量"复制"到新分配的环境变量表中...,即除栈、环境变量、命令行参数外的内存总长度 infinite infinite RLIMIT_FSIZE 可以创建的文件的最大字节长度,当超过软限制时,向进程发送 SIGXFSZ 信号,若信号被捕获,...结语 进程环境的核心还是这张内存布局图,有必要再复习一下: 从这里可以看到程序的各个段是如何排布的,就可以: 了解栈与堆的对向生长 了解环境变量新增的难点 了解 setjmp & longjmp 跳转时栈上自动变量的回退

26140
您找到你想要的搜索结果了吗?
是的
没有找到

进程服务器

一、思路 先与客户端建立好连接, 每次监听到一个客户端之后,都需要产生一个子进程去处理这个连接,然后父进程继续去等待监听,唯一一个要注意的点就是要使用信号来监听子进程是否结束,从而对其进行回收,防止僵尸进程的产生...&opt, sizeof(opt)); (3)bind函数 bind(lfd, (struct sockaddr*)&ser_addr, sizeof(ser_addr));b这个函数主要目的就是将服务器的地址结构绑定到套接字...lfd上,所以开始要设置服务器的ser_addr:ser_addr.sin_family = AF_INET, ser_addr.sin_port = htons(8888);ser_addr.sin_addr.s_addr...监听到了客户端后,就要开始创建子进程来对这个监听进行处理;pid = fork() 3、子进程处理通信 因为子进程不需要监听连接,使用可以close(lfd);之后便可以进行通信处理 void do_work...sizeof(buf)); tcp.Write(cfd, buf, n); tcp.Write(STDOUT_FILENO, buf, n); } } 4、父进程回收子进程

4.7K20

生产环境之“进程”两字

一、进程概念 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承...-e:显示所有进程和-a等同 -a:显示所有进程和-e等同 -f:选项显示其进程的父进程 -u:选项显示所有者信息 -x:包括不链接终端的进程 -o:指定属性进行显示...: PID:任务的进程号 PPID:进程的父进程进程号 RUSER:进程的所有者 EUSER:进程的生效用户 TTY:终端 PR:优先级 %CPU:CPU的占有率...:k 保存文件:W kill命令:向进程发送进程控制信号,以实现对进程管理。...-l:显示进程名 -a:显示完整格式的进程名 -P:pid 显示父进程为此处指定的进程进程列表

68980

Nginx服务器进程

Nginx服务器进程有3类:主进程、工作进程、缓存进程 (1)主进程 Nginx启动时运行的主要进程,主要功能是与外界通信和对内部其他进程进行管理 主要工作内容 1)读取配置文件,验证有效性和正确性...2)建立、绑定、关闭 socket 3)按照配置生成、管理、结束工作进程 4)接收指令,如 重启、升级、退出 5)不中断服务,平滑重启、升级,升级失败的回滚处理 6)开启日志文件,获取文件描述符 (2)...工作进程 由主进程生成,生成数量由配置文件指定,工作进程生存于主进程的整个生命周期 主要工作内容 1)接收请求 2)将请求依次送入各个功能模块进行过滤处理 3)IO调用,获取响应数据 4)与后端服务器通信...,接收后端服务器处理结果 5)数据缓存,访问缓存索引、查询、调用缓存数据 6)发送请求结果 7)接收主进程指令,如 重启、升级、退出 (3)缓存进程 缓存进程有两类 1)缓存索引重建进程 nginx启动后由主进程生成...,在缓存元数据重建完成后就自动退出 该进程启动后,对缓存文件的目录结构扫描,在内存中建立索引元数据库 2)缓存索引管理进程 生存于主进程的整个生命周期 负责在索引元数据更新完成后,对元数据是否过期进行判断

4.4K40

Linux进程学习【环境变量】

环境,才能正常编写代码,python 也是需要配置编码环境;而在我们的 Linux 中也有环境变量,由 环境变量 构成的集合称做 环境变量表;我们还可以调整 进程 的优先级,使得 进程 运行更加灵活...环境变量 就能找到动态库进行链接 环境变量 有着自己的特殊用途,还有有些具有全局属性,可以供所有 进程 共享 环境变量 有很多个,把它们聚在一起管理,就构成了 环境变量列表 环境变量列表 中的常见 环境变量...如上就是安装、卸载应用原理 ️添加环境变量 shell 可以读取到命令和命令行,我们可以直接通过命令的方式添加 环境变量 先来看看比较简单的 本地变量 添加 环境变量表 具有全局属性,可以供所有子进程共享...,倘若我们不想让 环境变量 被共享,可以设置 本地变量 $ TEST=private //可以直接在命令行中添加本地变量 现在的 TEST 环境变量是不被子进程共享的 如果想删除已经设置的 本地环境变量...进程 切换的方式运行多个 进程 ---- 总结 以上就是有关进程学习【环境变量】的全部内容了,本文主要研究对象是 环境变量,知道了 环境变量表 的存在,以及主函数是如何得到 环境变量表 表并实际运用的

12220

unix环境高级编程(中)-进程

目录 前言 进程环境 进程控制 进程关系 信号 线程 线程控制 高级IO 进程间通信 网络间进程通信:套接字 高级进程间通信 前言 笔者将《unix环境高级编程》主要内容总结为三篇:文件篇,进程篇,高级...本文是unix环境高级编程系列文章第二篇:进程篇。...该篇主要包括: 进程环境 介绍进程相关的基本概念和使用环境进程执行前的准备工作,进程如何终止,进程执行相关的环境变量表,进程执行时的内存空间布局,内存如何分配 进程控制 主要介绍进程控制符,进程如何创建...环境表 3.1 环境表内存布局 每个程序都会接收到一张环境表。环境表是一个字符指针数组,每个指针包含一个以null结束的c字符串地址。全局变量environ表示该地址 ?...3.2 环境变量设置 获取环境变量指定变量值的函数:getenv 设置环境变量的函数: ?

2.1K42

进程TCP并发服务器

进程TCP并发服务器 最初的服务器都是迭代服务器服务器处理完一个客户的请求,再接受下一个客户的请求。但是我们的期望应该是一台服务器同时为多个客户服务。...实现并发服务器最简单的办法就是为每个客户均fork一个子进程。...[accept返回后客户-服务器的状态] 并发服务器的下一步是调用fork,下图是从fork返回后的状态。此时描述字listenfd和connfd是父进程-子进程共享的。...[fork返回后客户-服务器的状态] 下一步是父进程关闭已连接套接口,子进程关闭监听套接口。...[父子进程关闭相应套接口后客户-服务器的状态] 最后的结果是子进程处理与客户的连接,父进程可对监听套接口调用accept来处理下一个连接。

5.8K90

《UNIX环境高级编程》第七章进程环境

main执行到最后一条语句时返回,那么进程是终止状态是0. 2.atexit函数 这个函数可以用来登记函数进给进程。...7.4 命令行参数 7.5 环境表 每个程序都接收到一张环境表。跟参数列表一样,环境表也是一个字符指针数组。其中每个指针包含一个以null结束的C字符串的地址。...可以用其取环境变量值。 还可以设置环境变量,比如改变环境变量、增加新的环境变量。...注意:环境表和环境字符串通常占用的是进程地址空间的顶部,所以它不能在向高地址扩展了;同时也不能移动在它之下的各栈帧,所以也不能向低地址方向扩展。 那么是如何实现上述操作的呢?...(这个也需要理解) 1)删除:比较简单,先在环境表中找到改指针,然后将所有后续指针都向环境表首部顺次移动一个位置。

46210

服务器被入侵,异常进程无法杀掉,随机进程

故事情节: 有一天在聚餐中,我有一个朋友和我说他的服务器上有有个异常的进程他一直在占满CPU在运行,我在一顿谦虚之后答应了他,有空登录上他的服务器看一下具体情况。...就是以上三张图,在proc目录中的exe指向的文件已被删除,我看到这里,我好奇这个进程肯定是被隐藏掉了。这时,我急中生智跟这位朋友要了root账号密码。...登录服务器用top命令一看,发现一个奇怪的进程在运行,我使用kill命令将其杀后,等了十来分钟后,发现没有被启动,这时我和这位朋友说干掉了,他问我是不是kill掉了,我说嗯,他又补充到,这个进程杀掉过段时间会起来的...没过多久,我又看了一下,发现这个进程换了个名字又启动了。...还干满了CPU,就在这时,我在研究这个进程运行文件的时候发现: 这个进程会连到一个韩国的服务器上,我访问这个IP发现是一个正常的网站,没有异常情况。

11K40

python 进程间通信(四) -- 共享内存与服务器进程

并发环境下的数据共享 通常,在并发环境下应该尽量避免数据和状态的共享,因为这意味着竞争条件的产生,而进程间的同步就意味着效率的降低以及更高的复杂度。...但 Python 的 multiprocessing 包中仍然提供了两种方法让你可以在多进程环境下共享数据: 共享内存 服务器进程 3....服务器进程 — server process python 提供了一种十分类似共享内存的数据共享机制 — 服务器进程。...通过 multiprocessing 包中的 Manager 类可以构造一个服务器进程对象,他支持用于进程间共享的多种数据类型: list dict Namespace Lock RLock Semaphore...BoundedSemaphore Condition Event Barrier Queue Value Array 一旦创建,对象的使用与原生类型的用法是完全相同的,因此相比于共享内存,服务器进程的使用更为简单和灵活

4.3K20
领券