问题!当子字符串检测出存在的时候,为何退出循环结束程序了?
c语言吧
全部回复
仅看楼主
level 5
#include <unistd.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <tgmath.h>
void process(void);
int search_substr(char *s,char *t);
int main(void)
{
FILE *fp;
int i=0;
char cTxt[200];
char cTarget[]="NameNode";//目标服务
process();
while(1){
system("/usr/java/latest/bin/jps>test.txt");//获取所有服务的列表
if ((fp=fopen("test.txt","r"))==NULL){
printf("File open error!!!!\n");
exit(0);//这里如果退出了会有提示的把
}
//cTxt=(char *)malloc(1*sizeof(char));
while (!feof(fp)){
/*将文件中的内容存入一个数组中*/
cTxt[i]=fgetc(fp);
i++;
}
if (search_substr(cTxt,cTarget)==1){
//system("/usr/bin/su");
//system("/home/tim/workspace/this\is\right/src/this\is\right<password.txt");
system("/home/tim/下载/hadoop/sbin/start-dfs.sh");
printf("%s\n",cTxt);//我就看看它有没有正常读取
}
//free(cTxt);
if(fclose(fp)){
printf("File close error!\n");
exit(0);//这里也是。退出了会有提示的把。
}
sleep(30);//30s检测一次
}
return 0;
}
void process(void){
/*变成进程*/
int pid;
int i;
if (pid=fork()){
exit(0);
}
else{
if (pid<0){
exit(1);
}
setsid();
for (i=0;i<NOFILE;++i){
close(i);
chdir("/temp");
umask(0);
return;
}
}
}
int search_substr(char *s,char *t){
/*子字符串的检索*/
int i,k;
char ans[800];
k=(strlen(s)-strlen(t));
for (i=0;i<=k;i++){
strcpy(ans,s);
*(ans+strlen(t)+i)='\0';
if (strcmp(ans+i,t)==0){
return 0;
}
}
return 1;
}
2014年12月14日 06点12分 1
1