LINUX高性能服务器读书笔记之程序规范
背景:除了网络通信,服务器程序还有许多细节问题,。
特点:细节都是模板式的,所以只需要讲明白就好,遵循一定的规范就好
类别:1.1运行形式-->后台进程,又称为守卫进程。没有控制终端,也不会意外受到用户输入。
它的父进程是:init进程(pid是1 的进程)
1.2日志系统。一般至少输出到文件,还可以输出到专门的UDP服务器。一般在/var/log 都拥有自己的日志目录
1.3运行身份:某个专门的非root身份。例子:MySQLd,httpd,syslogd等后台程序,都分别拥有自己的账户mysql,apache,syslog
1.4可配置。能处理很多很多命令行选项。如果一次性运行的选项太多,则需要配置文件来管理。一般会放在/etc。比如squid在/etc/squid3/squid.conf
1.5记录后台进程的pid。启动会有生成pid文件并且存入/var/run.例子:syslogd的pid文件是/var/run/syslogd.pid
1.6考虑系统资源和限制(自身最大负荷)例子:文件描述符的总数和内存总量。
linux细节处理方式
2.1日志:rsyslogd(syslog函数)
2.2用户信息:UID,EUID(有效用户ID),GID,EGID
EUID:方便资源访问。用途:它使得运行程序的用户拥有该程序的有效用户的权限。(su程序,su必须要访问/etc/passwd来改变用户信息。/etc/passwd是需要root权限的,所以普通用户能够访问它必须依靠EUID,拥有者可以设定自己拥有程序的set-user-id,命令是:chmod +s ****程序)
成都创新互联主要从事做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务洛宁,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
2.3进程间关系
2.3.1linux每个进程都隶属于一个进程组,除了pid还有PGID,每个进程组都有一个首领进程。首领进程的pid和PGID是一样的。
2.3.2进程组会一直存在。当其中所有进程都退出或者加入其他组才会终止。
2.3.3一个进程只能设置自己或者其子进程的{PGID。当子进程调用exec一系列函数后,父进程也不能再设置它的PGID。
2.4 会话
2.4.1定义:一些有关联的进程组将形成一个会话\\
实现:非首领进程可以调用该函数来创建新会话。
实现特点:调用进程会成为会话的首领,此时该进程是新会话的唯一成员。新建一个进程组,其PGID就是调用进程的PID,调用进程就是该组的首领。调用进程将离开终端
函数:pid_t setsid(void );
特点:没有sid,linux认为他等于会话首领所在的进程组的PGID,pid_t getsid(pid_t pid);
2.5系统资源限制
2.6改变工作目录和根目录
2.6.1函数:获取当前工作目录和改变进程工作目录char * getcwd(char* buf,size_t size);
int chdir(const char* path)
函数2:改变进程根目录chroot
int chroot(const char* path)
2.7.1服务程序后台化
linux 库函数
int deamon(int nochdir,int noclose);
参数nochdir:是否改变工作目录;0是为根目录,否则使用当前目录,noclose是0,标准输入和标准输出和标准错误输出都将重定向到/dev/null文件,否则依旧使用原有设备。该函数成功返回0.失败返回-1;
网页名称:LINUX高性能服务器读书笔记之程序规范
本文网址:http://cdiso.cn/article/ggjhse.html