linux高性能服务器编程第七章(linux服务器程序规范)

日志

#include <syslog.h>

void syslog(int priority , const char* message ,...);

void openlog(const char * ident , int logopt ,int facility);

int setlogmask(int maskpri);

void closelog();

用户信息

uid euid gid guid

#include < sys / types.h >

#include < unistd.h >

uid_t getuid();

uid_t geteuid();

gid_t getgid();

gid_t getegid();

int setuid(uid_t uid);

int seteuid(uid_t uid);

int setgid(gid_t gid);

int setegid(gid_t gid);

切换用户

注意从root切换

进程之间的关系

pid pgid 

#include <unistd.h>

pgid_t getpid(pid_t pid);

int setpgid(pid_t pid , pgid_t pgid);

pid = pgid pid 为群主

pid = 0 , 设置当前的进程PGID 为pgid

pgid =0,使用pid作为目标PGID

会话

一些有关联的进程会形成一个会话

#include < unistd.h>

pid_t setsid(void);

不能由当前租的首领创建,由其他成员创建,并把这个成员的pid作为进程组的PGID;

系统资源限制

#include <sys /resource.h>

int getrlimit (int resource ,struct rlimit *rlim );

int setrlimit (int resource ,struct rlimit *rlim );

struct rlimit 

{
rlim_t rlim_cur ;

rlim_t rlim_max;

};

resourece 的取值是

RLIMIT_AS

RLIMIT_CORE

RLIMIT_CPU

RLIMIT_DATA

RLIMIT_FSIZE

RLIMIT_NOFILE

RLIMIT_NPROC

RLIMIT_SIGPENDING

RLIMIT_STACK

改变工作目录和根目录

#include <unistd.h>

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

int chdir(const char* path);

int chroot(const char * path);

解决web服务器中的根目录,例如web中/var/www

服务器后台化

bool daemonize()

{
pid_t pid = fork();

if(pid <  0){

return false

}else if(pid > 0){

exit(0);

}

umask( 0 );

pid_t sid = setsid();

if(sid <  0){

return false;

}

if(chdir("/) < 0){

return false;

}

close(STDIN_FILENO);

close(STDOUT_FILENO);

close(STDERR_FILENO);

open("/dev/null",O_RDONLY);

open("/dev/null",O_RDWR);

open("dev/null",O_RDWR);

return true;

}

使用linux的库函数完成同样的效果为:
int daemon(int nochdir , int noclose);

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值