📄 ns_input.c
字号:
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <time.h>
#include <math.h>
#include "nfcnet.h"
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);
void yymmdd(char * ymd);
int fline(FILE *fp,char *buf1);
int proc1(char *buf1);
int statusx,semid;
main()
{ int num=0,in,i,sl,imk,imk1;
char *datestr=" ";
char fn1[50]; char bufx[3072];
FILE *fp1,*fp2,*fp3;
semid=semset();
printf("Semid is %d\n",semid);
for(i=0;i<50;i++)fn1[i]=0;
for(;;)
{
statusx=semopena(semid,P_MA_SORT);
if((fp1=fopen("/nfcnet/ddbf/ns_input.tmp","rb+"))!=NULL)
{
fp2=fopen("/nfcnet/temp/ma_sort1.tmp","ab+");
yymmdd(datestr);
sprintf(fn1,"%s%s%s","/nfcnet/tele/ns",datestr,".tel");
fp3=fopen(fn1,"a+");
for(;;)
{
imk=fline(fp1,bufx);
imk1=proc1(bufx);
if(imk1!=0){ fprintf(fp2,"%s\n",bufx); fprintf(fp3,"%s\n",bufx); }
if(imk==EOF)break;
}
fp1=freopen("/nfcnet/ddbf/ns_input.tmp","w+",fp1);
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
else
{
fp1=fopen("/nfcnet/ddbf/ns_input.tmp","w+");
fclose(fp1);
}
statusx=semclose(semid,P_MA_SORT);
printf("I am sleeping for (%d) Mins .\n",P_SLEEPTIME);
sleep(P_SLEEPTIME*60);
}
}
void yymmdd(char *ymd)
{
time_t idymd;
struct tm cdymd;
struct tm *cdymdp;
cdymdp=&cdymd;
time(&idymd);
cdymdp=localtime(&idymd);
cdymd=*cdymdp;
sprintf(ymd,"%02d%02d%02d",cdymd.tm_year,cdymd.tm_mon+1,cdymd.tm_mday);
}
/*
To read a line telegram .
*/
int fline(FILE *fp,char *buf1)
{ int ch;
char che='\n';
char *px;
px=buf1;
do
{ ch=fgetc(fp);
*px=(char)ch; px++;
}while((ch!=che)&&(ch!=EOF));
*px=0;
if(ch==EOF) { return EOF;}
else { return strlen(buf1);}
}
/*
To delete the more one space .
*/
int proc1(char *buf1)
{ char *i,*jks;
char * space=" ";
int len;
for(i=buf1;*i!=0;i++)if(*i<' ')*i=' ';
for(i=buf1;*i!=0;i++)if(*i>126)*i=' ';
do
{ jks=strstr(buf1,space);
if(jks!=0)for(i=jks;*i!=0;i++)*i=*(i+1);
}while(jks!=0);
len=strlen(buf1);
jks=buf1+len-1;
if(*(jks)!=' ') {jks=jks+1; *jks=' ';}
if(*buf1==' ') {for(i=buf1;*i!=0;i++)*i=*(i+1);}
len=strlen(buf1);
return len;
}
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 + -