-
关于守护进程dup stderr问题;
fd = open("/dev/null", O_RDWR); if (dup2(fd, STDIN_FILENO) == -1) if (dup2(fd, STDOUT_FILENO) == -1) #if xxx if (dup2(fd, STDERR_FILENO) == -1) #else fd_log = open("pathlog", O_RDWR); if (dup2(fd_log, STDERR_FILENO) == -1) #endif if (fd > STDERR_FILENO) { }
将dup2(fd_log, stderr)还是dup2(fd_null, stderr);
也就是标准错误重定向到 黑洞还是 log文件中
引擎注意事项:
- 进程名称
- cpu绑定
- 进程资源设置(file_limit core_limit signal_mask)
- 时间戳的设置 (多进程/多线程 )volatile 防止优化
- 守护进程
- 信号处理 以及 coredump处理
- log设置
- 参数处理
- 进程唯一实例
- 去掉root 特权
- 进程间通信-socketpair pipe unix-socket 共享内存(mmap munmap以及shmget shmat shmctl) 共享内存blogpipe-unix blog
网络中间件 :
采用 libevent libuv 再次封装还是 结合自己业务再次编写?
协议解析:
打包问题:
- fakeroot权限:使用fakeroot模拟root权限执行程序,在打包的时候,包里面的文件所有者必须是root。必须以root 权限来执行打包命令,但是应该避免在制作包的时候使用root权限。 为了解决这个矛盾,fakeroot被开发出来了。在fakeroot环境中,操作文件就像使用root操作文件一样,但是,实际上系统中文件的权限还是原来的权限。
-
LD_PRELOAD=//usr/userpath/x86build/lib/libfakeroot.so python build_packet.py