Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 查询服务是否正在运行_C_Linux_Service_Dnsmasq - Fatal编程技术网

C 查询服务是否正在运行

C 查询服务是否正在运行,c,linux,service,dnsmasq,C,Linux,Service,Dnsmasq,如何在C中查询服务(dnsmasq)是否正在运行?根据,默认情况下,它会将pid文件写入/var/run/dnsmasq.pid。此文件将是一个文本文件,其中包含一个表示进程ID的整数。打开该文件,读取该整数,然后调用kill(pid,0),查看进程在该pid处是否处于活动状态。(虽然检查PID是否存在并不能保证找不到以该PID运行的其他进程,但通常已经足够了。)如果我执行kill(PID,0)一旦我阅读了pid,结果是否会是它存在的0,而不是-1?有趣的是,虽然这是真的,但我的经验不同。这是因

如何在C中查询服务(dnsmasq)是否正在运行?

根据,默认情况下,它会将pid文件写入
/var/run/dnsmasq.pid
。此文件将是一个文本文件,其中包含一个表示进程ID的整数。打开该文件,读取该整数,然后调用
kill(pid,0)
,查看进程在该pid处是否处于活动状态。(虽然检查PID是否存在并不能保证找不到以该PID运行的其他进程,但通常已经足够了。)

如果我执行
kill(PID,0)
一旦我阅读了pid,结果是否会是它存在的
0
,而不是
-1
?有趣的是,虽然这是真的,但我的经验不同。这是因为我不是根。正如所料,如果它没有运行,调用
kill(pid,0)
将返回
-1
errno
ESRCH
。但是,如果它正在运行,它仍然返回
-1
errno
EPERM
。当作为root时,当发送空白信号时,运行的dnsmasq将根据您的回答返回
0