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

进程环境那些事儿

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

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

进程服务器

一、思路 先与客户端建立好连接, 每次监听到一个客户端之后,都需要产生一个子进程去处理这个连接,然后父进程继续去等待监听,唯一一个要注意的点就是要使用信号来监听子进程是否结束,从而对其进行回收,防止僵尸进程的产生...&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

【Linux】进程环境变量&&地址空间&&进程调度

1.环境变量 1.1 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里...SHELL : 当前Shell,它的值通常是/bin/bash 1.3 查看环境变量方法 echo $NAME //NAME:你的环境变量名称 1.4 和环境变量相关的命令 echo: 显示某个环境变量值...export: 设置一个新的环境变量 env: 显示所有环境变量 unset: 清除环境变量 set: 显示本地定义的shell变量和环境变量 1.5 环境变量的组织方式 每个程序都会收到一张环境表...环境变量通常具有全局属性,可以被子进程继承下去 #include #include int main() { char* env = getenv("MYENV...说明:环境变量是可以被子进程继承下去的!

5010

Linux进程——Linux环境变量

环境变量的配置文件 命令行启动的进程都是shell/bash的子进程,子进程的命令行参数和环境变量是父进程bash给我们传递的!...当我们将PATH环境变量置为空串时: 我们发现有很多的指令都用不了了,但当我们重新登录之后,又可以恢复正常! 其实:我们直接更改的是bash进程内部的环境变量信息!...我们用export指令可以将自己写的环境变量添加到父进程bash的进程上下文中,但是如果我们重新登录后,之前导入的变量是否还会存在?...,然后让父进程什么也不做,来测试一下子进程能否获取父进程的父进程bash的环境变量?...bash进程内部有效,不会被子进程继承下去 环境变量通过让所有的子进程继承的方式,实现自身的全局性!

7210

【Linux】进程切换&&环境变量

进程属于Linux操作系统非常重要的一部分,建议大家在熟练掌握Linux进程相关概念的基础上,再观看本篇博客 一.进程切换 1.进程特性 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至...1.显示所有的环境变量:env 2.环境变量具有全局性,被所有进程所共享,如果不想让其他进程看到,可以设置本地环境变量: 3.如果设置的本地环境变量不想使用了,可以用unset清理掉。...函数作用 : getenv函数的作用是在当前进程环境变量中查找指定名称的环境变量,并返回其值的指针。如果找到了对应的环境变量,则返回指向其值的指针;如果未找到,则返回NULL。...环境变量通常具有全局属性,可以被子进程所继承。...环境变量 环境变量是系统用来面对各种情况而建立的一些全局变量,我们创建的进程会继承父进程bash的环境变量,来完成身份认证,路径选择工作。

11810

生产环境之“进程”两字

一、进程概念 运行中的程序的一个副本,是被载入内存的一个指令集合 进程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 显示父进程为此处指定的进程进程列表

70480

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 环境变量是不被子进程共享的 如果想删除已经设置的 本地环境变量...进程 切换的方式运行多个 进程 ---- 总结 以上就是有关进程学习【环境变量】的全部内容了,本文主要研究对象是 环境变量,知道了 环境变量表 的存在,以及主函数是如何得到 环境变量表 表并实际运用的

14020

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.9K90
领券