用freopen重定向到stdout,怎么应该先执行的反倒放在后面去了,用了fflush也不行?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
char* GetLocalTime();
int IsRunned();
void main()
{
FILE* fp;
if((fp=freopen("/cms/batfiles/cas/logs/cascms.log","a+",stdout))==NULL)
{
printf("open file cascms.log error\n");
exit(1);
}
fflush(fp);
printf("%s",GetLocalTime());
if(!IsRunned())
{
printf("开始执行程序/cms/batfiles/cas/script/cascms.sh\n");
system("/cms/batfiles/cas/script/cascms.sh");
}
else
{
printf("进程已运行,无需再次调度\n");
}
fclose(fp);
return;
}
int IsRunned()
{
FILE* fp;
char szFileName[]="/cms/batfiles/cas/script/check";
char szCmd[]="ps -ef|grep cascms|grep -v cascms_do|grep -v grep>/cms/batfiles/cas/script/check";
char buff[100];
system(szCmd);
if((fp=fopen(szFileName,"r"))==NULL)
{
printf("open file %s error!\n",szFileName);
exit(1);
}
if((fgets(buff,100,fp)) ==NULL)
{
printf("fgetc error\n");
return 0;
}
else
{
/*printf("%s length is %d\n",buff,strlen(buff));*/
return 1;
}
}
char* GetLocalTime()
{
time_t lt;
/*char* szTime;*/
lt=time(NULL);
return ctime(<);
/*return szTime;*/
}
问题点数:20、回复次数:1Top
1 楼sswater(光杆兵)回复于 2006-08-01 12:59:34 得分 0
有人实现的重定向的方法,你可以看一下。
可以将 <stdio.h> 中的 stdout、stderr;<iostream.h> 中的 cout、cerr、clog;<winbase.h> 中的 STD_OUTPUT_HANDLE、STD_ERROR_HANDLE 各自重定向到不同的地方,并且还支持一种特殊的重定向:重定向到回调函数(Callback Function)
http://www.regexlab.com/zh/stdredir/
Top




