Linux高性能服务器编程(三)

7. Linux服务器程序规范

7.1. UID、EUID

一个进程拥有两个用户ID:UID、EUID

  • 做任何一个操作时,最终看它有没有权限,是在判断有效用户ID是否有权限
  • 比如su程序,要访问 /etc/passwd,而访问该文件需要root权限。将su程序设置set-user-id标志,普通用户启动的su程序就能依据EUID来执行。

7.2. 进程间关系

在这里插入图片描述
在这里插入图片描述

7.3 查看、修改资源限制

  • ulimit
    修改当前shell环境下的资源限制(软限制、硬限制),对该shell启动对所有后续程序有效
  • 修改配置文件

7.4 获取、改变工作目录

char* getcwd(char* buf, size_t size);

int chdir(const char* path);

7.5 设置后台进程

int daemon(int nochdir, int noclose);
	nochdir:
		==0,工作目录切换为 / 
		!=0,继续使用当前工作目录
	noclose:
		==0,标准输入、标准输出、标准错误重定向到/dev/null
		!=0,依然使用原来对设备

8. 高性能服务器程序框架

8.1 C/S模型

在这里插入图片描述

8.2 I/O模型

阻塞IO:阻塞的文件描述符
非阻塞IO:非阻塞的文件描述符

  • 可能被阻塞的系统调用:accept、send、recv、connect

对于非阻塞的I/O系统调用总是立即返回,如果事件没有立即发生,返回-1,根据errno来区分是否出错。

  • accept、send、recv:errno设置成EAGAIN或EWOULDBLOCK
  • connect:errno设置成EINPROGRESS

只有在事件已经发生的情况下操作非阻塞I/O,才能提高程序的效率。
非阻塞I/O通常要和其它I/O通知机制一起使用

  • I/O复用:能提高程序效率的原因在于具有同时监听多个I/O事件的能力
  • SIGIO信号

8.3 池

内存池:socket的接受缓存、发送缓存
进程池、线程池
连接池:连接数据库的长久连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值