1.程序中umask(0)什么意思?
linux中的 umask 函数主要用于:在创建新文件或目录时屏蔽掉新文件或目录不应有的访问允许权限。文件的访问允许权限共有9种,分别是:r w x r w x r w x(它们分别代表:用户读 用户写 用户执行 组读 组写 组执行 其它读 其它写 其它执行)。
其实这个函数的作用,就是设置允许当前进程创建文件或者目录最大可操作的权限,比如这里设置为0,它的意思就是0取反再创建文件时权限相与,也就是:(~0) & mode 等于八进制的值0777 & mode了,这样就是给后面的代码调用函数mkdir给出最大的权限,避免了创建目录或文件的权限不确定性。
umask ([ int $mask ] ) : int
umask() 将 PHP 的 umask 设定为 mask & 0777 并返回原来的 umask。当 PHP 被作为服务器模块使用时,在每个请求结束后 umask 会被恢复。
参数
mask The new umask.
返回值
无参数调用 umask() 会返回当前的 umask,有参数则返回原来的 umask。
2.调用setsid()使进程成为会话组长,控制终端: posix_setsid();
<?php
$pid = pcntl_fork(); // fork
if ($pid < 0)
exit;
else if ($pid) // parent
exit; //父进程退出
else { // child
$sid = posix_setsid(); //子进程成为会话组长
if ($sid < 0)
exit;
for($i = 0; $i <= 60; $i++) { // do something for 5 minutes
sleep(5);
}
}
?>
3.gc_enable — 激活循环引用收集器
设置 zend.enable_gc为 1, 激活循环引用收集器。
4.posix_kill Send a signal to a process 发送信号给进程
posix_kill ( int $pid , int $sig ) : bool
Send the signal sig to the process with the process identifier pid.
posix_kill(): 向进程发送信号。
SIGINT : 通过键盘CTRL+C.
SIGTERM : 有时候进程失去响应了还会执行kill [PID]命令,未加任何其他参数的话,程序会接收到一个SIGTERM信号。
程序收到上面两个信号的时候,默认都会结束执行,可以通过注册信号改变默认行为。
posix_kill(pid进程发送空信号,使用这个方法对某个进程的存在性进行检查,而不会真的发送信号。所以,如果这个函数返回-1表示父进程已经退出。
posix_kill(0, SIGKILL);解释
0是进程号,SIGKILL是信号常量,表示强制退出
这里0是一个特殊的进程,表示当前进程组里面的所有进程,即进程组里的所有进程都退出。
5.posix_getpwnam Return info about a user by username
6.守护进程的作用
Linux在启动时需要启动很多系统服务, 它们向本地和网络用户提供了 Linux 的系统功能接口, 直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(Daemons) 来执行的。编写守护进程实际上是把一个普通进程按照守护进程的特性进行改造。比如, 网络通信服务中的守护进程需要能同时接受多个请求, 它不断地在侦听端等待远程的连接请求, 收到请求后,创建一个子进程, 让其负责与远端的通信, 而自己则继续返回侦听。子进程和父进程间的通信采用消息机制, 因此守护进程的开发涉及到子进程、进程组、会晤期、信号量、文件权限、目录和控制终端等多个概念。
7.pcntl_signal — 安装一个信号处理器
pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] ) : bool
函数pcntl_signal()为signo指定的信号安装一个新 的信号处理器。
参数
signo 信号编号
handler 信号处理器可以是用户创建的函数或方法的名字,也可以是系统常量 SIG_IGN(译注:忽略信号处理程序)或 SIG_DFL(默认信号处理程序).
SIG_IGN SIG_DFL







网友评论