博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNP Chapter 5 - TCP客户-服务器程序例子
阅读量:4952 次
发布时间:2019-06-12

本文共 1424 字,大约阅读时间需要 4 分钟。

5.1. 概述

5.2. TCP echo server程序: main函数

5.3. TCP echo server程序: str_echo函数

5.4. TCP echo client程序: main函数

5.5. TCP echo client程序: str_cli函数

5.6. 正常启动

5.7. 正常终止

5.8. Posix信号处理

每个信号都有一个处理办法(disposition),也称为与此信号关联的行为(action)。我们通过调用函数sigaction来设置一个信号的处理办法。

1.可以提供一个函数,在信号发生时随即调用。这个函数称为信号处理函数(signal handler),而此行为便称为捕获(catching)信号。有两个信号不能捕获SIGKILL和SIGSTOP,函数由信号值这一单一参数来调用且无返回值,函数原型为

void handler(int signo);

信号SIGIO,SIGPOLL,SIGURG还要求捕获它的进程有其它动作。

2. 可以通过设置信号的处理办法为SIG_IGN来忽略它,但是SIGKILL和SIGSTOP不能忽略。
3. 可以设置信号的处理办法为SIG_DFL来为它设置缺省处理办法。

函数signal的函数原型层次复杂

void ( * signal (int signo, void ( * func)(int) ) )(int);

用typedef简化函数原型

typedef void Sigfunc(int); // 它说明信号处理程序是带有一个整形参数且无返回值的函数

这样signal的函数原型就变为

Sigfunc * signal (int signo, Sigfunc * func); // 此函数的第二个参数和返回值都是指向信号处理函数的指针

 

5.9. 处理SIGCHLD信号

设置僵尸(Zombie)状态的目的就是维护子进程的信息,以便父进程在稍后的某个时候取回。如果一个进程终止,且该进程有子程序处于僵尸状态,则所有僵尸子进程的父进程ID均置为1(init进程),init进程将作为这些子进程的继父,并负责清除他们(也就是说,init进程将wait它们,从而去除僵尸进程),有些Unix系统给僵尸进程输出的COMMAND列为<defunct>(ps命令输出)。

5.10. wait和waitpid函数

#include 
pid_t wait(int *statloc); //返回: 进程ID为0成功,-1出错 pid_t waitpid(pid_t pid, int *statloc, int options); //返回: 进程ID为0成功,-1出错

函数wait和waitpid均返回两个值: 函数的返回值是终止子进程的进程ID号,子进程的终止状态(一个整数)则是通过指针statloc返回的。

5.11. accept返回前连接夭折

5.12. 服务器进程终止

5.13. SIGPIPE信号

5.14. 服务器主机崩溃

5.15. 服务器主机崩溃后重启

5.16. 服务器主机关机

5.17. TCP程序例子小结

5.18. 数据格式

5.19. 小结

5.20. 习题

转载于:https://www.cnblogs.com/s7vens/archive/2011/12/22/2297869.html

你可能感兴趣的文章
fegin 调用源码分析
查看>>
Linux的基本命令
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
sql 语法大全
查看>>
SQLite移植手记1
查看>>
Java AmericanFlagSort
查看>>
Mysql远程连接报错
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
sqlServer去除字段中的中文
查看>>
HashMap详解
查看>>
Adobe Scout 入门
查看>>
51nod 1247可能的路径
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
SpringBoot访问html访问不了的问题
查看>>