⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mycron.c

📁 Cron的实现 UNIX 下设计编写中小型程序的能力
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>#define MAXLINENO 5int lineno,fd,txt_i,inline_i,i,pos,c,length;char smin[5], shour[5], sday[5], smonth[5], sweek[5], contxt[300], oneline[60];char nweek[5],nmonth[5],nday[5],nhour[5],nmin[5];char currenttime[30];struct    {    	char time[30];    	char cmd[30];    } line[MAXLINENO];int find_task(){	if(fd=open("./crondir/b02051.cron",O_RDONLY,S_IROTH|S_IWOTH)<0)		printf("Open cron file error");	lseek(fd,0,SEEK_SET);	length=read(fd,contxt,300);	inline_i=0;	lineno=0;	c=0;	for(i=0;i<3;i++)	{		nweek[c++]=currenttime[i];	}	c=0;	for(i=4;i<7;i++)	{		nmonth[c++]=currenttime[i];	}	c=0;	for(i=8;i<10;i++)	{		nday[c++]=currenttime[i];	}	c=0;	for(i=11;i<13;i++)	{		nhour[c++]=currenttime[i];	}	c=0;	for(i=14;i<16;i++)	{		nmin[c++]=currenttime[i];	}			for(txt_i=0;txt_i<length;txt_i++)	{		oneline[inline_i++]=contxt[txt_i];		if(contxt[txt_i]=='\n')		{			pos=1;			c=0;			for(i=0;i<inline_i;i++)			{				switch(pos)				{				case 1:					if(oneline[i]=='*')					{						strcpy(smin,nmin);						pos++;						i++;						break;					}					if(oneline[i]!=' ')						smin[c++]=oneline[i];					else					{						pos++;						c=0;					}					break;				case 2:					if(oneline[i]=='*')					{						strcpy(shour,nhour);						pos++;						i++;						break;					}					if(oneline[i]!=' ')						shour[c++]=oneline[i];					else					{						pos++;						c=0;					}					break;				case 3:					if(oneline[i]=='*')					{						strcpy(sday,nday);						pos++;						i++;						break;					}					if(oneline[i]!=' ')						sday[c++]=oneline[i];					else					{						pos++;						c=0;					}					break;				case 4:					if(oneline[i]=='*')					{						strcpy(smonth,nmonth);						pos++;						i++;						break;					}					if(oneline[i]!=' ')						smonth[c++]=oneline[i];					else					{						pos++;						c=0;					}					break;				case 5:					if(oneline[i]=='*')					{						strcpy(sweek,nweek);						pos++;						i++;						break;					}					if(oneline[i]!=' ')						sweek[c++]=oneline[i];					else					{						pos++;						c=0;					}					break;				case 6:					line[lineno].cmd[c++]=oneline[i];					break;				}			}			sprintf(line[lineno].time,"%s %s %s %s:%s:00 2004\n",sweek,smonth,sday,shour,smin);			inline_i=0;			lineno++;		}		}	return 1;}void align(){	time_t now;	int i;	char nowtime[30];	time(&now);	sprintf(nowtime,"%s",ctime(&now));	for(i=0;nowtime[i]!='\n';i++)		nowtime[i]=nowtime[i+17];	i=atoi(nowtime);	sleep(60-i);}int timecmp(char a[], char b[]){	int i;	for(i = 0;i<16;i++)		if(a[i]!=b[i]) return 0;	return 1;}int main(void){	int i, alignfactor;	time_t now;	while(1)	{		align();		for(alignfactor=0;alignfactor<60;alignfactor++)		{			time(&now);			sprintf(currenttime,"%s",ctime(&now));			find_task();			for(i=0;i!=lineno;i++)			{				if(timecmp(line[i].time,currenttime))					system(line[i].cmd);			}			sleep(60);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -