92 lines
2.3 KiB
C
92 lines
2.3 KiB
C
|
#include "monitsys.h"
|
|||
|
|
|||
|
|
|||
|
void getPidByName(pid_t *pid, char *task_name)
|
|||
|
{
|
|||
|
DIR *dir;
|
|||
|
struct dirent *ptr;
|
|||
|
FILE *fp;
|
|||
|
char filepath[50];
|
|||
|
char cur_task_name[50];
|
|||
|
char buf[BUF_SIZE];
|
|||
|
dir = opendir("/proc");
|
|||
|
if (NULL != dir)
|
|||
|
{
|
|||
|
while ((ptr = readdir(dir)) != NULL) //循环读取/proc下的每一个文件/文件夹
|
|||
|
{
|
|||
|
//如果读取到的是"."或者".."则跳过,读取到的不是文件夹名字也跳过
|
|||
|
if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0))
|
|||
|
continue;
|
|||
|
if (DT_DIR != ptr->d_type)
|
|||
|
continue;
|
|||
|
sprintf(filepath, "/proc/%s/status", ptr->d_name);//生成要读取的文件的路径
|
|||
|
fp = fopen(filepath, "r");
|
|||
|
if (NULL != fp)
|
|||
|
{
|
|||
|
if( fgets(buf, BUF_SIZE-1, fp)== NULL )
|
|||
|
{
|
|||
|
fclose(fp);
|
|||
|
continue;
|
|||
|
}
|
|||
|
sscanf(buf, "%*s %s", cur_task_name); //如果文件内容满足要求则打印路径的名字(即进程的PID)
|
|||
|
if (!strcmp(task_name, cur_task_name))
|
|||
|
{
|
|||
|
sscanf(ptr->d_name, "%d", pid);
|
|||
|
}
|
|||
|
fclose(fp);
|
|||
|
}
|
|||
|
}
|
|||
|
closedir(dir);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
FILE *getshellvalue(char *pcmd)
|
|||
|
{
|
|||
|
FILE * fstream = NULL;
|
|||
|
|
|||
|
if(NULL == (fstream = popen(pcmd,"r")))
|
|||
|
{
|
|||
|
fprintf(stdout,"execute command failed: ");
|
|||
|
return NULL;
|
|||
|
}
|
|||
|
|
|||
|
//pcmd = "ls -trl | awk '{print $9}'";
|
|||
|
|
|||
|
return fstream;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
int main(void)
|
|||
|
{
|
|||
|
pid_t fpid; //fpid表示fork函数返回的值
|
|||
|
pid_t fpid1;
|
|||
|
|
|||
|
char pcip[50]="\0",task_name[50]="\0",cmanager[50]="\0";
|
|||
|
|
|||
|
FILE *fp = NULL;
|
|||
|
fp = fopen ("/root/cheng/initip.ini", "r");
|
|||
|
if(fp == NULL)
|
|||
|
{
|
|||
|
printf("<p>open file:passwd.txt error</p>");
|
|||
|
return 0;
|
|||
|
}
|
|||
|
// fscanf(fp,"%s %s %s %s",pcip,task_name,cmanager,manprocess);
|
|||
|
fgets(pcip, sizeof(pcip), fp);
|
|||
|
fgets(task_name, sizeof(task_name), fp);
|
|||
|
fgets(cmanager, sizeof(cmanager), fp);
|
|||
|
// fgets(manprocess, sizeof(manprocess), fp);
|
|||
|
fclose(fp);
|
|||
|
printf("name of task is %s\n",cmanager);
|
|||
|
getPidByName(&pid, cmanager);
|
|||
|
if (pid > 0)
|
|||
|
{
|
|||
|
printf("\nCapture dump function enable..\n");
|
|||
|
printf("pid1:%d\n", pid);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
printf("\nCapture dump function disable..\n");
|
|||
|
printf("pid2:%d\n\n", pid);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|