linux C 判断程序上是否处于运行状态
时间: 2023-12-13 11:02:42 浏览: 227
检测程序是否运行
5星 · 资源好评率100%
在Linux下,可以使用进程ID(PID)来判断程序是否处于运行状态。具体步骤如下:
1. 获取目标程序的PID,可以使用ps命令,例如查找名为"myprogram"的程序:
```
ps -ef | grep myprogram
```
该命令会输出所有含"myprogram"关键字的进程信息,可以通过其中的PPID或PID来确定目标进程的PID。
2. 使用kill命令来判断程序是否处于运行状态,例如判断PID为12345的进程是否运行:
```
kill -0 12345
```
该命令不会发送任何信号,只会检查PID是否存在。如果返回0,则表示进程仍在运行;如果返回其他值,则表示进程已经结束或者没有权限访问该进程。
可以将以上两个步骤封装成一个函数,在需要判断程序是否运行时调用该函数。例如:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int is_process_running(const char *process_name)
{
int pid = -1;
char cmd[256];
FILE *fp = NULL;
sprintf(cmd, "ps -ef | grep %s | grep -v grep | awk '{print $2}'", process_name);
fp = popen(cmd, "r");
if (fp == NULL) {
return -1;
}
if (fgets(cmd, sizeof(cmd), fp) != NULL) {
pid = atoi(cmd);
}
pclose(fp);
if (pid == -1) {
return 0;
}
if (kill(pid, 0) == 0) {
return 1;
}
return 0;
}
int main(int argc, char *argv[])
{
if (is_process_running("myprogram")) {
printf("myprogram is running\n");
} else {
printf("myprogram is not running\n");
}
return 0;
}
```
该函数首先通过ps命令获取目标程序的PID,然后使用kill命令来判断PID是否存在,最后返回程序是否运行的状态。
阅读全文