📄 manual.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);
void delsp(char *p0);
int statusx,semid;
main()
{ int num=0,in,i,sl;
char *datestr=" ";
char fn1[50];
char fix[1024],fix0[128];
FILE *fp1,*fp2,*fp3;
semid=semset();
printf("Semid is %d\n",semid);
for(i=0;i<50;i++)fn1[i]=0;
for(i=0;i<1024;i++)fix[i]=0;
yymmdd(datestr);
sprintf(fn1,"%s%s%s","/nfcnet/tele/ma",datestr,".tel");
if((fp3=fopen("/nfcnet/sysd/lastman.dat","r"))!=NULL)
{ fscanf(fp3,"%d",&num); fclose(fp3);}
fp2=fopen("/nfcnet/temp/ma_sort0.tmp","a+");
fp1=fopen(fn1,"a+");
for(;;)
{ num++;
if(num==1000)num=1;
printf("\n\nEnter 'DEL' to delete a telegram of typed .\n");
printf("Enter 'END' to end input of a telegram .\n");
printf("Enter 'EXIT' to exit from manual .\n");
printf("Profix and flow NO. %s%03d\n",P_MANFIX1,num);
for(i=0; i<=20; i++)printf("-");
printf("\n");
for(;;)
{ gets(fix0);
sl=strlen(fix0);
for(i=0; i<sl; i++)
{ in=fix0[i]; fix0[i]=(char)toupper(in);}
delsp(&fix0[0]);
if(strstr(fix0,"DEL")!=0) break;
if(strstr(fix0,"END")!=0) break;
if(strstr(fix0,"EXIT")!=0) break;
strcat(fix," ");
strcat(fix,fix0);
}
if(strstr(fix0,"EXIT")!=0) break;
if(strstr(fix0,"END")!=0)
{ delsp(&fix[0]);
fprintf(fp1,"%s%03d %s\n",P_MANFIX1,num,fix);
fprintf(fp2,"%s%03d %s\n",P_MANFIX1,num,fix);
if((fp3=fopen("/nfcnet/sysd/lastman.dat","w+"))!=NULL)
{ fprintf(fp3,"%d",num); fclose(fp3);}
for(i=0;i<1024;i++)fix[i]=0;
}
else
{ for(i=0;i<1024;i++)fix[i]=0; num--; if(num==0)num=999; }
}
fclose(fp1);
fclose(fp2);
statusx=semopena(semid,P_MA_SORT);
fp1=fopen("/nfcnet/temp/ma_sort0.tmp","rb+");
fp2=fopen("/nfcnet/temp/ma_sort1.tmp","ab+");
for(;;){in=fgetc(fp1); if(in==EOF)break; fputc(in,fp2);}
fp1=freopen("/nfcnet/temp/ma_sort0.tmp","w+",fp1);
fclose(fp1);
fclose(fp2);
statusx=semclose(semid,P_MA_SORT);
}
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);
}
void delsp(char *p0)
{ char *p1; int sl1,i;
for(;;)
{ p1=strstr(p0," ");
if(p1==0)break;
sl1=strlen(p1);
for(i=0; i<=sl1; i++)*(p1+i)=*(p1+i+1);
}
if(*p0==' ')
{ sl1=strlen(p0);
for(i=0; i<=sl1; i++)*(p0+i)=*(p0+i+1);}
sl1=strlen(p0);
if(*(p0+sl1-1)==' ')*(p0+sl1-1)=0;
}
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 + -