
2、"ABNORMAL",注意这是一个字符串常量,因为在C语言中使用双引号可以定义一个字符串常量。这个字符串可以是程序员自己随便写的,就像"hello word" 一样。"ABNORMAL"表示不正常的意思。
3、ERROR、CONFLICT、NOERROR三个常量,可以使用#define语句进行定义。至于是在哪个头文件中定义很难说。我建议你可以在当前的.c文件开始的地方自己定义一下,例如:
#include <stdio.h>
... /*其他的头文件等等*/
#define ERROR -1
#define CONFLICT 1
#define NOERROR 0
... /*其他的函数*/
int detect_process(char * process_name)
{
FILE *ptr
char buff[512]
char ps[128]
sprintf(ps,"ps -e | grep -c ' %s</p>",process_name)
strcpy(buff,"ABNORMAL")
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)>=2)
{
pclose(ptr)
return CONFLICT
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/
return ERROR
pclose(ptr)
return NOERROR
}
请注意:里面有个popen() pclose()函数,是通过管道创建一个进程,这两个函数必须要有<stdio.h>文件。具体的参数可以参看百度百科:http://baike.baidu.com/view/2445803.htm?fr=aladdin。
atoi()函数能将字符串转换成整型数。参考百度百科:http://baike.baidu.com/view/653935.htm。
4、整个程序的意思是:
(1)使用"ps"命令,将结果保存到ps变量中,注意sprintf的第一个参数是一个char数组。
(2)将"ABNORMAL"字符串保存到buff变量中,buff也是一个char数组。
(3)使用popen()函数创建一个进程,并将这个进程定向到标准输出(也就是显示器上)。
(4)将进程的输入出存到buff变量中,然后将其转化为数字
(5)如果这个数字>=2说明发生了冲突,返回CONFLICT
(6)在循环之后,比较一下,如果buff一直是"ABNORMAL",说明ps 命令出错,返回ERROR
(7)否则返回NOERROR
综上:ERROR、CONFLICT、NOERROR几个变量只是作为函数返回值,告诉函数调用者这次调用的结果而已,所以完全可以自己定义。除非你们公司已经规定了ERROR必须是某个值,不然你是可以自己定义的,只是在以后调用detect_process()函数的时候记得什么返回值对应什么结果就行了。
自己定义就是在.c文件开头使用#define 好了。
linux用tail查看用户是否存在:1.可通过tail 数字(显示数) /etc/passwd文件,查看已存在的用户
2.
用户口令文件查看tail 数字(显示数) /etc/shadow
3.
用户组账号文件tail 数字(显示数) /etc/group
4.
用户组口令文件tail 数字(显示数) /etc/gshadow
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)