LINUX高性能服务器读书笔记之程序规范

本文介绍了服务器程序设计的主要特征,包括运行形式、日志系统、运行身份、可配置性等方面,并详细探讨了进程间的各种关系及如何处理系统资源限制等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:除了网络通信,服务器程序还有许多细节问题,。
特点:细节都是模板式的,所以只需要讲明白就好,遵循一定的规范就好
类别: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 ****程序)

                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;

转载于:https://blog.51cto.com/10725691/2068878

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值