网络编程多进程服务器结束

      最后更新:2021-11-01 09:16:31 手机定位技术交流文章

      参考

      1. TCP/IP网络方案拟订

      多进程服务器端

      具有代表性和发送方-终端实现模式和方法:

      1. 多过程服务器:通过生成多种程序提供服务。
      2. 多常规中继器:通过捆绑和使用相同的I/O客户管理系统提供的服务。
      3. 多线服务器:通过创建与客户线路相似的行来提供服务。

      多处理器与Windows系统不兼容。

      进程

      使用内存空间的运行中的软件称为过程。

      进程ID

      操作系统为所有进程指定ID。 此ID被称为进程ID, 其整数值高于2.1。 要分配给操作系统启动后的第一个进程( 协助操作系统), 用户进程无法获取 ID 1 。

      fork函数

      叉函数产生所谓的进程重复。 也就是说, 它不是一个完全独立的程序创建进程, 而是一个复制运行和呼叫叉函数的过程。 另外, 两个进程在叉函数调用后执行语句。 但是, 因为相同的内存空间通过相同的程序被复制, 以后的程序必须根据叉函数的返回值来区分 。

      1. 叉函数将子进程 ID 返回到父进程 。
      2. 叉法返回 0 用于子进程 。

      成功时返回进程ID;失败时返回-1。

      示例

      僵尸进程

      进程一旦完成(主要功能已经完成)就应停止,但有时这些进程将发展成僵尸进程,使用关键的系统资源。 这一进程被称为僵尸进程。

      产生僵尸进程的原因

      要创建子进程末端, 请使用叉子函数 :

      1. 出入证参数,并援引退出函数
      2. 返回语句由主函数执行,然后返回值。

      您传递到退出函数的值会被发送到操作系统。 主函数返回声明返回的值会被传输到操作系统。 操作系统不会杀死子进程, 直到这些值被提供给生成子进程的父进程。 此状态中的进程是僵尸进程。 要摧毁僵尸进程, 儿童进程退出声明或返回声明的价值应该传递给创建进程的父进程。

      然而,操作系统并没有主动将这些价值转移给母体进程;相反,操作系统只是在母体进程启动请求(功能呼叫)时才告知该价值;此外,如果母体进程不积极要求子程序的结束状态价值,操作系统将保持原状,并在僵尸进程中长期维持子进程。

      创建僵尸进程示例

      后台处理

      后台处理是指将控制台窗口中的指令放到后台运行的方式。如果以如下方式运行上述示例,则程序将在后台运行(&将触发后台处理):

      当您以这种方式执行程序时,可以将进一步的命令输入同一控制表格,而不必打开新的控制表格。

      在《僵尸销毁程序1》第1号动议中使用等待功能。

      如果成功, 则提供中止的子进程ID; 否则, 返回 - 1 。

      如果子进程在调用此函数时结束, 传递到子进程的返回值将存储到函数参数( 退出函数的参数值, 主函数的返回返回值)中显示的内存空间。 但是, 函数参数所在的单位包含必须使用以下宏分离的其他信息 :

      1. 当子进程正常终止时返回 True 。
      2. 返回子进程返回的值 。

      因此,在将变数状态的地址传送到等待功能时,对等待功能的调用应措辞如下:

      wait函数示例

      如果在援引等待函数时没有结束子进程,应用程序将停止(锁定)直到子进程终止,因此必须谨慎地援引该函数。

      销毁僵尸的第2步:使用等待功能

      调用等待状态方法时, 应用程序不会屏蔽 。

      成功时, 返回中止的子进程编号( 或 0 ); 失败时, 返回 - 1 。
      (1)pid
      如果设定为 1, 等待目标子进程完成的代号与等待任何子进程结束的候机功能相同, 等待任何子进程结束的待机函数为 1, 等待目标子进程完成的代号与等待机函数相同, 等待机可以等待任何子进程结束。

      (2)statloc
      无法关闭临时文件夹:%s。

      (3)options
      发送标题sys/ wait. h 定义的 WNOHANG 常数不会被一个未结束的子进程屏蔽, 但返回 0 并离开函数 。

      等待功能在运行中

      信号信号的信号和函数

      父进程不能简单地调用等待函数等待子进程完成, 而在子进程结束时通过操作系统提醒父进程效率更高。 这导致了信号处理的开发。 这里的“ 信号” 是操作系统在特定发生时给进程的信息 。

      通过登记信号,操作系统被指示在程序以自己的子进程终止时执行特定功能。此功能可用信号功能完成,该功能在创建信号并返回预先登记的函数指示器时被调用。

      第一个参数包含特殊案例信息,第二个参数具有Janin在特定情况下将执行的函数的地址值。遇到第一个参数所代表的假设情况时,请调用第二个参数的函数。

      以下是信号功能中记录的一些例外情况和相关常数:

      1. SIGALRM:通过援引警报功能发出信号。
      2. 按CTRL+C键
      3. SIGCHLD代表子程序终止。

      与 Mychild 函数联系完成“ 子进程终止” 的请求, 例如 :

      信号函数的插图

      提醒函数是其中最详细的 :

      如果函数被调用正整数参数,则 SIGALRM 信号会在相应时间后创建。如果向此函数发送零,则前一个 SIGALRM 签名将被取消。如果在信号通过函数被订入后没有提供与该信号相对应的处理功能,则程序(通过联系信号函数)以错误结束。

      连接信号处理功能的物体是操作系统,但该功能不能在程序沉睡时被调用。因此,当生成一个信号来调用信号处理器时,它会唤醒被使用睡眠功能阻塞的过程,而一旦该过程被唤醒,它就不会再次睡觉。即使你还没有达到睡眠功能中指定的时间,它也不会再次睡觉。

      签字签字功能

      签字签字功能类似于signal函数,而且完全可以代替后者,也更稳定,因为signal函数在UNIX系列的不同操作系统中可能存在区别,但签字签字功能完全相同

      返回 0 如果成功,返回 0;如果失败,返回 1
      (1)signo
      信号电文的传输方式与信号功能相同。
      (2)act
      关于第一个参数对应的信号处理函数(信号处理器)的信息
      (3)oldact
      使用此选项获取先前登记的信号处理函数指针, 或在不需要时提供 0 。

      签字的构造如下:

      信号处理功能的指针值由 sa_ handler 保留。 所有 sa_mask 和 sa_ blags 的位数最初都转换为 0, 用于描述与信号相关的选项和特性 。

      示例:

      消除僵尸的过程,使用吸附。

      同时发送发件人,执行多项任务

      扩展前的回声服务器允许它同时向众多客户提供服务。 当客户请求服务时,回声服务器将构建一个提供服务的子系统。 执行这些任务需要以下步骤:

      1. 第一阶段:接受功能被回声服务器终端(父程序)调用以接受连接请求。
      2. 第二阶段:此时,套接字文件配置文件已经建立并发送到子进程。
      3. 第三阶段:次级程序通过使用自由通过文件描述符提供服务。

      实现并发服务器

      注:在援引叉子函数之前,请复制父程序的所有资源。另一方面,套子不是程序,严格说来,是一个操作系统,但程序有一个文件说明,代表适当的软件包。在援引叉子函数后,两个文件描述符指同一套填字词,只有两个文件描述符在销毁之前被终止(销毁)。

      TCP 分裂器 I/O软件

      当在程序代码中重复读写函数时,在等待服务器将数据反馈给已实现的回声客户端后,数据被传输。现在可以建立许多操作来分割接收和接收数据的过程。

      客户端母程序负责接收数据, 额外创建子程序负责发送数据。 当程序分割时, 不同的程序负责输入和输出, 这样程序就可以转移, 无论客户是否从服务器获取数据 。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/12627.html

          热门文章

          文章分类