📄 srt_tran.c
字号:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include "nfcnet.h"
long file_size(void);
int semset(void);
int semopena(int semset_semid,int semset_semno);
int semopenr(int semset_semid,int semset_semno);
int semclose(int semset_semid,int semset_semno);
main()
{ int statusx; int semid; int i,ijk,in;
FILE *fp1,*fp2;
semid=semset();
printf("Semid is %d\n",semid);
ijk=0;
for(;;)
{ if(file_size()==0L)
{ statusx=semopenr(semid,P_SR_TRAN);
if(statusx==0)
{ if((fp1=fopen("/nfcnet/temp/sr_tran0.tmp","rb+"))==NULL)
{ fp1=fopen("/nfcnet/temp/sr_tran0.tmp","a+");
fclose(fp1);
fp1=fopen("/nfcnet/temp/sr_tran0.tmp","rb+");}
fp2=fopen("/nfcnet/ddbf/sr_tran1.tmp","ab+");
for(;;){in=fgetc(fp1); if(in==EOF)break; fputc(in,fp2);}
fp1=freopen("/nfcnet/temp/sr_tran0.tmp","w+",fp1);
fclose(fp1); fclose(fp2);
statusx=semclose(semid,P_SR_TRAN);
}
if(statusx==-1) printf("SRT_TRAN semopenr is error !\n");
}
else
{ printf("/nfcnet/ddbf/sr_tran1.tmp is not empty !\n");}
printf("SRT_TRAN Waiting for (%d) mins(%d) . \n",P_SLEEPTIME,ijk);
ijk++; if(ijk==1000)ijk=0;
sleep(P_SLEEPTIME*60);
}
}
long file_size(void)
{ long f_size; FILE *fp;
f_size=0L;
if((fp=fopen("/nfcnet/ddbf/sr_tran1.tmp","r"))!=NULL)
{ fseek(fp,0L,SEEK_END);
f_size=ftell(fp);
fclose(fp);
}
return f_size;
}
int semset(void)
{ int semset_semid;
key_t semset_key= P_SEMSKEY;
int semset_nsems= P_SEMNUMB;
int semset_semflg= IPC_CREAT|P_SEMACCESS;
semset_semid=semget(semset_key,semset_nsems,semset_semflg);
return semset_semid;
}
int semopena(int semset_semid,int semset_semno)
{ extern int errno; int status;
int semset_semflg=P_SEMACCESS;
struct sembuf *semset_sops;
struct sembuf semset_sopsbuf;
size_t semset_nsops=1;
semset_sops=&semset_sopsbuf;
semset_sopsbuf.sem_num=semset_semno;
semset_sopsbuf.sem_op=-1;
semset_sopsbuf.sem_flg=semset_semflg;
status=semop(semset_semid,semset_sops,semset_nsops);
if(status==-1) {return -1;} else {return 0;}
}
int semopenr(int semset_semid,int semset_semno)
{ extern int errno; int status;
int semset_semflg=P_SEMACCESS|IPC_NOWAIT;
struct sembuf *semset_sops;
struct sembuf semset_sopsbuf;
size_t semset_nsops=1;
semset_sops=&semset_sopsbuf;
semset_sopsbuf.sem_num=semset_semno;
semset_sopsbuf.sem_op=-1;
semset_sopsbuf.sem_flg=semset_semflg;
status=semop(semset_semid,semset_sops,semset_nsops);
if(status==-1) {return -1;} else {return 0;}
}
int semclose(int semset_semid, int semset_semno)
{ extern int errno; int status;
int semset_semflg=P_SEMACCESS|IPC_NOWAIT;
struct sembuf *semset_sops;
struct sembuf semset_sopsbuf;
size_t semset_nsops=1;
semset_sops=&semset_sopsbuf;
semset_sopsbuf.sem_num=semset_semno;
semset_sopsbuf.sem_op=1;
semset_sopsbuf.sem_flg=semset_semflg;
status=semop(semset_semid,semset_sops,semset_nsops);
if(status==-1) {return -1;} else {return 0;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -