首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

进程服务器

一、思路 先与客户端建立好连接, 每次监听到一个客户端之后,都需要产生一个子进程去处理这个连接,然后父进程继续去等待监听,唯一一个要注意的点就是要使用信号来监听子进程是否结束,从而对其进行回收,防止僵尸进程的产生...二、步骤 1、建立连接 (1)socket函数 这里使用的是Ipv4,TCP套接字,所以使用的接口是:lfd = socket(AF_INET, SOCK_STREAM, 0)如果是IPV6把AF_INET...后面加个6,如果是UDP,那就是把第二个改成SOCK_DGRAM; (2)setsockopt函数 主要是端口复用:固定写法就好,第一个参数是socket函数返回值套接字的文件描述符:int opt =...&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

4.7K20

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

nginx源码阅读(6)Master进程浅析

由于nginx使用的是多进程的模型,因此,进程间的通信或者同步很重要,为什么要进行进程同步呢?...举个具体的例子,我们假设服务器共有4个worker进程,我们知道nginx有一个全局变量,是ngx_processes数组,他存储着所有进程的信息,在worker1创建的时候,worker2,worker3...4. nginx中channel指令 我们发现,ngx_channel_handler中共有6个指令类型,分别是NGX_CMD_QUIT、NGX_CMD_TERMINATE、NGX_CMD_REOPEN...把指令给相应的进程,这样当worker进程解析这个消息时,便根据新进程的slot把新进程的信息(新进程的pid、新进程的channel[0])保存起来。...Fork的子进程会继承父进程,Fork子进程,利用fork函数,子进程会继承父进程的资源。 第三步,3.

39521

进程TCP并发服务器

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

5.8K90

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

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

11K40

xv6(17) 进程三:代码部分

开门见山,主要有两个事件会触发进程的调度与切换: 一个进程的时间片到了,该下 $CPU$ 了 一个进程因为某些事件阻塞主动让出 $CPU$ $xv6$ 进程切换分为三个步骤: $A$ 进程切换到调度程序...$xv6$ 这是里每个 $CPU$ 一个,所有进程共享。...在 $xv6$ 或者 $Linux$ 里除了第一个 $init$ 进程需要内核来创建之外,其他的所有进程都是使用 $fork$ 来创建,第一个进程的创建放在本文最后一个部分,这一节先来看普通进程的创建方式...$xv6$ 的 $fork$ 实现就很朴实无华,将父进程所有的东西几乎都复制了一份。...,$xv6$ 的锁设计本身不难,难得是锁的使用,这里就根据进程这一块使用锁的地方来简单聊一聊。

23110

xv6(16) 进程二:调度算法

进程二:调度算法 调度是操作系统里面一个很重要的概念,进程中有调度,页面置换有调度,磁盘访问也有调度,本文讲述的是进程之间的调度,以及多处理器之间的调度策略。...能够及时响应进程的需求 适用于分时/实时系统 抢占方式采用的策略: 时间片,当前进程的时间片用完后调度其他就绪进程 优先级,有更高优先级的进程出现后,抢占当前正运行的进程进程,有更短进程出现后,抢占当前正运行的进程...特点: 可抢占,当来了一个新进程,如果这个新进程比正在运行的当前进程需要更少的时间,则抢占当前进程的 CPU。 相比短进程优先性能更好,短进程只要就绪就可以抢占 CPU 开始执行。...抢占式:处理器分配给队列中某优先级最高的进程后,在执行的过程中如果来了一个优先级更高的进程,调度程序则停止当前进程的执行转去调度新来的那个优先级更高的进程。...如果 CPU 正在执行某较低优先级队列中的进程时,较高优先级队列中来了一个新进程,则这个新进程抢占当前进程的 CPU,即 CPU 将当前进程放在原队列的队尾,转而去为那个较高优先级的进程服务。

22710

进程管理-Linux每日一练(6)

Z 僵尸进程 X 死掉的进程 题目二:通过 ps 命令我们可以获取哪些关键信息?...使用 uptime 可以查看机器负载情况 $ uptime 21:31 up 4 days, 6:54, 3 users, load averages: 3.54 3.27 3.02 使用 top...Ok的,但是无法查看趋势,也没办法批量查看多台服务器,我推荐使用今天发文的10个开源监控组件把服务器监控起来。...题目四:怎么让进程在后台运行?怎么让后台运行的进程切换到前台? 这一题讲的是作业控制 job ,我们可以通过他灵活的让进程在前后台切换、暂停....拓展知识点:守护进程 最不想遇到的事就是进程挂掉,一个告警电话打过来,半夜两三点爬起来就为了手动启动一个进程。所以进程自动拉起是很重要的。

93031

linux(6)查看进程ps命令「建议收藏」

ps命令 Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器 查看所有进程 ps -A 显示所有进程信息,连同命令行 ps...-ef ps -ef返回列表各个字段的含义 UID:表示用户ID PID:表示进程ID PPID:表示父进程号 C:表示CPU的占用率 STIME:进程的启动时间 TTY:登入者的终端机位置 TIME...:表示进程执行起到现在总的CPU占用时间 CMD:表示启动这个进程的命令 查找指定进程 ps -ef | grep 关键字 显示所有进程更详细的信息,包括进程占用CPU、内存 ps -aux ps...-aux返回列表各个字段的含义 USER: 表示哪个用户启动了这个进程 PID: 进程ID %CPU: 进程CPU的占用率 %MEM: 进程物理内存的占用率 VSZ: 进程占用的虚拟内存量 (Kbytes...,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

2.1K30

服务器线程并发和进程并发

进程和线程的使用在前面博文已经讲述完毕,在完成一个最简单的服务器之后,就是要考虑下如何实现并发服务器了。 要实现服务的并发,只能通过进程和线程两种方式。...在实际并发服务器应用场合,在IO层大多通过两个地方来提高代码效率,一个是描述符处理,一个是线程/进程调度处理。 下图简单描述了并发服务器的原理: ?...在处理IO时,会用到IO复用技术提高效率,在线程/进程分配时,会先构造线程池或进程池,并以某种方式调度,这些在后续博文详细描述。 下面是并发实现的简单代码,利用线程和进程实现服务器的并发。...所以在代码中,父子进程都会关闭不需要的描述符。 测试结果如下: ? ps -aux查看系统进程,可以看到三个进程,一个是主进程用于listen监听,两个子进程进行通信。 ?...线程并发和进程并发各有优劣,目前大多服务器还是用线程进行并发的,进程要对父进程进行拷贝,资源消耗大,但相互直接资源互不影响,线程效率高但是要注意锁的使用,一个线程可能会影响整个服务器的运行。

2.9K70
领券