版权声明:转载请注明来源 https://blog.csdn.net/u013702678/article/details/82928824
swoole_process提供的kill操作用于向指定pid进程发送信号。
bool swoole_process::kill($pid, $signo = SIGTERM);
- 默认的信号为
SIGTERM
,表示终止进程 $signo=0
,可以检测进程是否存在,不会发送信号
下面我们看下其流程。
static PHP_METHOD(swoole_process, kill)
{
long pid;
long sig = SIGTERM;
//解析输入参数信息,这里输入参数有进程ID和要发送的信号信息
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &pid, &sig) == FAILURE)
{
RETURN_FALSE;
}
int ret = kill((int) pid, (int) sig);//调用linux系统调用kill
if (ret < 0)//发送失败
{
if (!(sig == 0 && errno == ESRCH))//不属于信号异常和进程不存在的情况
{
swoole_php_error(E_WARNING, "kill(%d, %d) failed. Error: %s[%d]", (int) pid, (int) sig, strerror(errno), errno);
}
RETURN_FALSE;
}
RETURN_TRUE;
}