溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[Linux文件]每隔1分鐘創(chuàng)建一個文件,并且每隔1秒將當(dāng)前時間信息寫入到文件

發(fā)布時間:2020-04-01 10:55:11 來源:網(wǎng)絡(luò) 閱讀:1318 作者:銀河星君 欄目:編程語言
//這是一個在參數(shù)指定文件中連續(xù)寫入當(dāng)前時間的應(yīng)用
//每隔1分鐘在當(dāng)前目錄下建立一個新文件,通過tm_sec是否為0來判斷
//文件以1秒為時間間隔,將當(dāng)前的時間寫入文件,然后回車換行
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include<time.h>
int main(int argc,char *argv[])
{

    time_t filetime;//時間結(jié)構(gòu)體對象
    struct tm *p;//時間結(jié)構(gòu)體指針
    int temp,seektemp;                         //偏移量計算中間量
    int fd;                                    //文件描述符
    char writebuf[50];                        //寫字符串緩沖區(qū)
    char filenamebuf[10] = "File";             //文件名稱緩沖區(qū)
    char timebuf[6];                          //時間緩沖區(qū)
    struct timeval timenow,timeold;            //時間變量
    struct timezone timez;
    int j = 0;
    int writeCounter = 0;                      //寫入計數(shù)器

    if(argc!= 1)                               //如果參數(shù)錯誤
    {
        printf("Plz input the corrcet file name as './exam39lseekFun filename string'!\n");
        return 1;					//如果參數(shù)不正確則退出
    }

    gettimeofday(&timeold,&timez);             //取得一個時間信息作為參考時間信息
    time(&filetime);//獲得時間參數(shù)
    p = localtime(&filetime);//獲得時分秒?yún)?shù),以供創(chuàng)建新文件
    sprintf(timebuf,"%02d%02d%02d",p->tm_hour,p->tm_min,p->tm_sec);
    strcat(filenamebuf,timebuf);//創(chuàng)建文件名
    strcat(filenamebuf,".txt");
    fd=open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);//創(chuàng)建文件

    // fd = open(*(argv+1),O_RDWR|O_CREAT,S_IRWXU); //打開文件如果沒有則創(chuàng)建
    while(1)   //進入主循環(huán)
    {
        while(1)   //1毫秒延時判斷
        {
            gettimeofday(&timenow,&timez);    //獲取當(dāng)前時間參數(shù)
            time(&filetime);//獲得時間參數(shù)
            p = localtime(&filetime);//獲得時分秒?yún)?shù),以供創(chuàng)建新文件
            sprintf(timebuf,"%02d%02d%02d",p->tm_hour,p->tm_min,p->tm_sec);
            //printf("%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
            //時分秒信息放入timebuf緩沖區(qū)備用
            //gettimeofday(&timenow,&timez);    //獲取當(dāng)前時間參數(shù)
            if((timenow.tv_sec - timeold.tv_sec) == 1)  //如果到達一秒
            {
                timeold = timenow;    //更新保存的時間信息
                printf("%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
                //printf("p->tm_sec:%02d\n",p->tm_sec);
                break;                //1秒時間到,退出
            }
        }

        if(p->tm_sec==0)//如果是0秒,到1分鐘了
        {
            char filenamebuf[]= "File";
            strcat(filenamebuf,timebuf);//創(chuàng)建文件名
            strcat(filenamebuf,".txt");
            fd=open(filenamebuf,O_RDWR|O_CREAT,S_IRWXU);//創(chuàng)建文件
            writeCounter=0;
            printf("new filename %s\n",filenamebuf);
        }
        time(&filetime);         //獲得當(dāng)前時間參數(shù)
        sprintf(writebuf,"%s",ctime(&filetime));     //將當(dāng)前時間參數(shù)放入寫緩沖區(qū)
        printf("%s",&writebuf);            //在屏幕上打印單簽writebuf的內(nèi)容
        if(writeCounter == 0)		//第一次寫入
        {
            temp = write(fd,writebuf,strlen(writebuf));  //寫入數(shù)據(jù)
            seektemp = lseek(fd,0,SEEK_CUR);   //獲得當(dāng)前的偏移量
            writeCounter++;   //寫入計數(shù)器++
        }
        else
        {
            j = strlen(writebuf) * writeCounter;  //獲得偏移量
            seektemp = lseek(fd,j,SEEK_SET);
            temp = write(fd,writebuf,strlen(writebuf));
            writeCounter++;
        }
    }
    close(fd);
    return 0;
}

已上機測試

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI