网络编程学习(十)

1.守护进程(daemon)是在后台运行且不与任何控制终端关联的进程。Unix系统通常有很多守护进程在后台运行,执行不同的管理任务。

守护进程没有控制终端通常源于它们由系统初始化脚本启动。然而守护进程也可能从某个终端由用户在shell提示符下键入命令行启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端昌盛信号等发生任何不期望的交互,也可以避免在后台运行的守护进程非预期地输出到终端。


2.daemon_init函数,通过调用它,可以把普通进程转变为守护进程


3.在涉及套接字的I/o操作上设置超时的方法有以下3种:

调用alarm,它在指定超时期满时产生SIGALRM信号。这个方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用;

在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或write调用上;

使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项。这个方法的问题在于并非所有实现都支持这两个套接字选项。

上述三个技术都适用于输入和数出操作,不过我们依然期待可用于connect的技术,因为TCP内置的connect超时相当长。select可用来在connect上设置超时的先决条件是相应套接字处于非阻塞模式,而那两个套接字选项对connect并不适用。另外,前两个技术适用于任何描述符,而第三个技术仅仅适用于套接字描述符。


你可能感兴趣的:(网络编程学习(十))