之前我们已经编写了一个通用的Socket服务器端程序,我们现在增加对此类操作系统特性的一些code!
大家都知道fork() 只有在Unix/Linux类操作系统才有!因为他们没有线程这一说。他们只有子进程。
要用到fork那么就必须用到 waitpid() !
waitpid函数原型:
#include<sys/types.h> /* 提供类型pid_t的定义 */
#include<sys/wait.h>
pid_twaitpid(pid_tpid, int *status, int options);
参数pid=-1时,等待任何一个子进程退出,没有任何限制,此时waitpid和wait的作用一模一样。
参数 status我们设置为NULL。
参数options提供了一些额外的选项来控制waitpid,WNOHANG常量表示,即使没有子进程退出,它也会立即返回,不会像wait那样永远等下去。
我们希望只有给waitpid()信号时,才使用它!
这时,我们需要另外一个函数sigaction()。
sigaction函数原型:
#include<signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
参数 signum=SIGCHLD时,只有子进程停止或者退出才进行调用。
参数 act是一个指向sigaction结构的指针。
参数 oldact一般废止不用。
我们主要设置结构sigaction的sa_handler、sa_mask和sa_flags三个成员变量即可!
下面是示例:
End.
分享到:
相关推荐
【标题】"serverjre-9.0.4_linux-x64_bin.tar.zip" 提供的是适用于Linux操作系统的Java Development Kit(JDK)版本9.0.4的服务器级运行时环境(Server JRE)。这个文件是通过.tar.gz格式进行打包压缩的,这在Linux...
### Linux平台网络编程(TCP/IP) #### 知识点概览 1. **网络基础知识** - 网络的历史与发展。 - OSI七层模型的解析。 - Internet体系模型的理解。 - 客户/服务器模型的运作机制。 2. **Linux/Unix系统背景**...
在本文中,我们将深入探讨如何在Linux环境下使用C语言实现一个聊天室程序,这是一个非常实用的网络编程项目,可以帮助我们理解TCP/IP通信、多线程处理以及并发控制等核心概念。我们将按照描述中的步骤,逐步解析这个...
Linux网络编程是IT领域中的一个重要话题,特别是在服务器端开发、分布式系统和云计算环境中。这个主题主要涉及如何在Linux操作系统上利用TCP/IP协议栈进行网络应用的开发。标题提及的"Linux网络编程PPT和源码"是针对...
在IT领域,网络编程是构建分布式系统和网络应用的基础,特别是在服务器端开发中。Linux操作系统因其开源、稳定和强大的网络支持而备受青睐。本压缩包文件聚焦于Linux环境下的网络编程,主要涉及TCP(传输控制协议)...
在Linux系统中,网络编程是开发跨平台应用和服务的关键技术之一。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,广泛应用于互联网中的各种服务,如HTTP、FTP等。本篇文章将深入探讨Linux...
- Server端:创建ServerSocket监听端口,接收到连接请求后,不直接创建新线程,而是将处理客户端的任务封装为Runnable对象,提交给线程池。 - Client端:模拟多个客户端发起连接请求,测试服务器的并发处理能力。 - ...
Linux网络编程是操作系统中一个重要的领域,涉及到网络通信的基础知识,特别是对于开发服务器端应用程序的开发者来说至关重要。本文将引导初学者逐步理解Linux环境下的网络编程,主要关注于使用套接口(Socket)进行...
【标题】:“基于UDP协议的Client/Server Linux网络编程” 在计算机网络中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它提供了比TCP(Transmission Control Protocol,传输控制...
在Linux系统中,网络编程是实现跨机器通信的关键技术,特别是TCP协议,它提供了一种可靠的、基于连接的传输方式。本示例中,我们有两个文件,一个作为服务器端,另一个作为客户端,它们用于实现通过TCP协议从服务器...
在Linux系统中,网络编程是构建分布式应用的关键技术之一,主要涉及的是进程间通信(IPC)中的套接字...学习Linux下的TCP网络编程,不仅有助于理解网络通信的基本原理,也是开发服务器端应用和网络工具的基础技能。
在Linux系统中,网络编程是实现跨机器通信的关键技术,主要涉及客户端与服务器端的交互。本主题将深入探讨客户端与服务器之间的异步通信,以及如何利用`fcntl`和`accept`这两个重要的函数来实现这一目标。 首先,...
在Linux平台上移植Web服务器,你需要了解操作系统层面的网络编程接口,例如套接字(socket)API。这是编写网络应用程序的基本接口,它允许程序员创建、配置、连接和发送/接收数据。Web服务器的工作原理通常包括监听...
标题中的“Linux TCP”指的是在Linux操作系统环境下进行TCP(Transmission Control Protocol)网络编程。TCP是互联网协议栈中的一种面向连接的、可靠的、基于字节流的传输层通信协议。在这个主题下,我们主要探讨...
总结来说,通过`server.c`和`client.c`这两个文件,初学者可以学习如何在Linux C环境中使用`select`函数进行网络编程,理解服务器如何监听并处理客户端的请求,以及客户端如何与服务器建立连接并进行数据交换。...
对于想要学习网络编程或者提升这方面技能的开发者来说,这是一个很好的起点。通过深入研究和实践,你可以掌握更多关于socket编程的高级概念,如多线程、异步I/O模型(如epoll)和更复杂的网络协议。
Linux网络编程是一个深入探讨如何在Linux操作系统环境下设计和实现网络应用程序的主题。这个主题涵盖了网络协议、套接字接口、多线程编程、并发处理、I/O复用模型、信号处理、错误处理等多个方面。源代码和课件的...
在UNIX网络编程中,通常将进行通信的一方称为客户端(client),另一方称为服务器端(server)。 描述中提到的书籍被认为是一本非常不错的网络编程参考书,且希望它对读者有所帮助。书籍面向的读者可能包括初学者到...
在学习Linux网络编程的过程中,构建一个简单的FTP(File Transfer Protocol)服务器和客户端是常见的实践项目。FTP是一种标准的网络协议,用于在Internet上在不同主机之间传输文件。在这个项目中,我们将探讨FTP的...
本文将深入探讨Linux下的Socket网络编程,主要使用C语言进行讲解。 一、Socket基本概念 Socket在网络编程中扮演着核心角色,它是进程间的通信端点,提供了在互联网上不同计算机间进程通信的接口。在Linux中,Socket...