📄 findstate.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <sys/types.h>
char *FindState(const char *commands, const char *delim)
{
if(NULL == commands)
{
return 0;
}
char line[133], comm[80];
char *cmd = NULL;
char *state = NULL;
char *token = NULL;
char *linep = NULL;
FILE *fp;
int stat;
int flg = 0;
fp = popen("ps -x","r");
if(NULL == fp)
{
return 0;
}
if(NULL == fgets(line, sizeof(line), fp))
{
pclose(fp);
return 0;
}
for(linep = line; ; linep = NULL)
{
if(NULL == (token = strtok(linep, delim)))
{
pclose(fp);
return 0;
}
if(0 == strcmp(token, "COMMAND") )
{
cmd = token;
flg++;
}
if(0 == strcmp(token, "STAT"))
{
state = token;
flg++;
}
if(2 == flg )
{
flg = 0;
break;
}
}
while(true)
{
if(NULL == fgets(line, sizeof(line), fp))
{
pclose(fp);
return 0;
}
if(NULL == (token = strtok(cmd , delim)))
{
pclose(fp);
return 0;
}
if(0 == strcmp(token, commands))
{
if(NULL == (token = strtok(state, delim)))
{
pclose(fp);
return 0;
}
break;
}
}
stat = pclose(fp);
if (!WIFEXITED(stat) || 0 != WEXITSTATUS(stat))
return 0;
return token;
}
int main(void)
{
char *status = NULL;
status = FindState("/usr/sbin/sshd"," \t\n");
if(status == "Z")
{
printf("/usr/sbin/sshd STAT : [%s] \n\n",status);
}
else
{
printf("/usr/sbin/sshd STATS : [%s] \n\n",status);
}
exit(EXIT_SUCCESS);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -