linux检查进程是否正在正常运行
来源:互联网 发布:图解网络硬件下载 编辑:程序博客网 时间:2024/04/29 08:38
1、popen函数
popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell. 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写.
command 参数 是 一个 字符串指针, 指向的是一个 以 null 结束符 结尾的字符串, 这个字符串包含 一个 shell 命令. 这个命令 被送到 /bin/sh 以 -c 参数 执行, 即由 shell 来执行. type 参数 也是 一个 指向 以 null 结束符结尾的 字符串的指针, 这个字符串 必须是 'r' 或者 'w’ 来指明 是 读还是写.
2、strsep函数
3、程序思路
是先用shell找出进程名,然后发信号0确认进程是否在正常运行, 代码如下:
static int check_pid(const char *psAppName)
{
FILE *psFile = NULL;
int iRet = FAIL;
char acCmd[128] = {0};
char acBuff[PID_INFO] = {0};
char *p = acBuff;
pid_t iWnePid = -1;
char *psStrtok = NULL;
memset(acCmd,0,sizeof(acCmd));
memset(acBuff,0,sizeof(acBuff));
snprintf(acCmd, sizeof(acCmd),"ps -ef|grep %s",psAppName);
debuging("acCmd = %s\n", acCmd);
/*执行shell命令搜索进程wnet*/
psFile = popen(acCmd, "r");
if(NULL == psFile)
{
debuging("psFile == NULL\n");
return FAIL;
}
if (NULL == fgets(acBuff, PID_INFO, psFile))
{
return FAIL;
}
debuging("acBuff = %s\n", acBuff);
if (strlen(acBuff) > 0)
{
/*获取进程号*/
while((psStrtok = strsep(&p, " ")))
{
//debuging("psStrtok = %s\n", psStrtok);
if(NULL == psStrtok)
{
if(0 == strlen(psStrtok))
return FAIL;
}
else
{
debuging("psStrtok = %s\n", psStrtok);
if (strlen(psStrtok) > 0)
{
if(0 == (iWnePid = atoi(psStrtok)))
{
printf("GetPid Failed\n");
return FAIL;
}
else
{
printf("iWnePid = %d\n", iWnePid);
break;
}
}
}
}
}
pclose(psFile);
/*发信号确认进程是否正常*/
iRet = kill(iWnePid, 0);
debuging("iRet = %d\n", iRet);
if(0 == iRet)
{
iRet = WNET_EXIST;
printf("process: %s exist!\n",psAppName);
}
else
{
memset(acCmd,0,sizeof(acCmd));
snprintf(acCmd, sizeof(acCmd), "kill -9 %d", iWnePid);
debuging("process: %s not exist!, acCmd = %s\n",psAppName, acCmd);
}
return iRet;
}
- linux检查进程是否正在正常运行
- 检查Android进程当前是否正在后台运行
- linux根据进程名查询是否正在运行
- android 检查某个服务是否正在运行
- 检查进程是否在运行
- 守护进程判断进程是否运行正常
- python判断一个进程是否正在运行
- linux 检查定时检查程序是否运行
- 检查apache服务器是否正在运行的脚本
- NSIS开始安装时检查**.exe是否正在运行
- Delphi检查进程是否在运行
- 检查网络是否正常
- Linux 列出所有正在运行的进程
- 显示Linux所有正在运行的进程
- Linux查看当前正在运行的进程
- linux下php检查进程是否存在
- Linux C语言检查进程是否存在
- innosetup 安装前判断是否有进程正在运行
- Android 实现歌曲播放时歌词同步显示
- Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建
- Idea +maven+java不能打包
- Linux操作系统上安装GCC编译器过程
- 简易计算器
- linux检查进程是否正在正常运行
- sh 取路径
- Wordpress style.css version number
- OpenGL: Bump Mapping综述
- 谷歌已经将Fragment设定为默认布局了
- OCP 1Z0 053 21
- quartz2.2.1 example 08代码分析
- 磁盘与文件系统管理
- ubuntu下进行GTK+第一个学习:helloworld