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

📄 intrade.c

📁 在不同的进程之间实现信号量的传递,从而触发特定的事件
💻 C
字号:
/* * 	%W%	%G% *	人行营业部同城票据处理系统 *	Copyright (C) 2000 杭州信雅达系统工程有限责任公司 * *	查询未复核提入交易程序main() *	作者: *	日期: */#include "public.h"#include "tp_code.h"#include "global.h"#include "user_msg.h"#include "SDKpub.h"#include "tcpapi.h"#include "pubutil.h"#include "pltutil.h"#include <stdio.h>#include <stdlib.h>#include <time.h>#include <signal.h>#include <errno.h>#include "s_qry_in.h"#include "s_uflag.h"/* 全局变量声明 */int debug;		void itom(char *str, int i, int len){	char strbuf[257];		memset(strbuf, 0, sizeof(strbuf));	sprintf(strbuf, "%.*d", len, i);	memcpy(str, strbuf, len);}int mtoi(char *str, int len){	char strbuf[257];		memcpy(strbuf, str, len);	strbuf[len] = 0;		return atoi(strbuf);} long mtol(char *str, int len){	char strbuf[257];		memcpy(strbuf, str, len);	strbuf[len] = 0;		return atol(strbuf);} int main(argc, argv)int argc;char *argv[];{	struct  s_qry_in   note;	struct  s_uflag   s;	char tmp[1024],Result[3],pid_buf[64],infobuf[61];	char buffer[64],pidstr[9],bankno[7],level[2];	char bankno1[7],bankno2[7],filename[64];	int	dlen,pid,result = 0;	FILE  *fp,*fp1,*fp2;   	int proc_num = 0;	char profile[60];		char filercv[60];	char CliNumStr[9];	char PIDFILE[60]; 	TCPHEAD head;	char svraddr[32];	int svrport;	char buffout[200];		sprintf(debugfile,"%s.log",argv[0]);        if( putenv( "ISCOUNTER=Y" ) != 0 )	{	    SDKerrlog( CLILOG, "[%s|%d] putenv() error! %s", __FILE__, __LINE__,	        strerror(errno) );            exit( -1 );	}	GetProcess( (char *)getenv("LOGNAME"), argv[0], &proc_num );	if( proc_num > 1)	{		debugint(proc_num);		SDKerrlog( CLILOG, "[%s|%d] 已有同名进程运行!", __FILE__, __LINE__ );		exit(0);	}		sprintf( profile, "%s/etc/%s", getenv("HOME"), CLI_PROFILE );	SDKerrlog( CLILOG, "[%s|%d] Step 1", __FILE__, __LINE__ );	memset(CliNumStr,0,sizeof(CliNumStr));	GetProfileString( profile, "NODE INFO", "CliNum", CliNumStr );	debugstr(CliNumStr);	if( GetSvrAddr( svraddr, &svrport ) < 0 )	{		SDKerrlog( CLILOG, "[%s|%d] 取后台通讯参数失败!", __FILE__, __LINE__ );		exit(0);	}	sprintf( PIDFILE, "%s/etc/%s", getenv("HOME"),"oper.pid" );	SDKerrlog( CLILOG, "[%s|%d] Ready open pidfile ...", 				__FILE__, __LINE__ );	if((fp2 = fopen(PIDFILE, "r")) == NULL)	{		SDKerrlog( CLILOG, "[%s|%d] open pidfile fail!", 				__FILE__, __LINE__ );		exit(-1);	}		while(!feof(fp2))	{		fgets(buffer, 63, fp2);		if(feof(fp2)) break;		strcpy(pidstr,(char *)strtok(buffer,"|"));		strcpy(bankno,(char *)strtok(NULL,"|"));		strcpy(level,(char *)strtok(NULL,"|"));		trim_all(pidstr);		trim_all(bankno);		trim_all(level);		level[1] = 0;		strcpy(bankno1,bankno);		strcpy(bankno2,"000000");		memset(filename,0,sizeof(filename));		sprintf(filename,"%s/tmp/in_%08s.dat",getenv("HOME"),pidstr);		pid = atoi(pidstr);			if(kill(pid, 0) != 0)			continue;		dlen=sizeof(struct s_qry_in);		sprintf(buffout, "%04d%6s%6s%60s%15s%15s%2s", REQ_QRY_INTRADE_UNCHECKED,			bankno1,bankno2, "","netaddr","hostaddr","00");		memset( &head, 0, sizeof(head) );		sprintf( head.TrType, "%06d", REQ_QRY_INTRADE_UNCHECKED );		head.Sleng=strlen( buffout );		memcpy(head.NodeId,CliNumStr,strlen(CliNumStr));		memset(&note,0,sizeof(note));		memset(filercv,0,sizeof(filercv));		SDKerrlog( CLILOG, "[%s|%d] Ready cli_sndrcv trtype = "				"REQ_QRY_INTRADE_UNCHECKED ...", __FILE__, __LINE__ );    	if( cli_sndrcv( svraddr, svrport, &head, buffout, NULL, (char *)&note, filercv,  GetAppTimeOut())<0 )		{			SDKerrlog( CLILOG, "[%s|%d] 通信失败! RetCode=[%s]", 				__FILE__, __LINE__,head.RetCode );			exit(0);		}		memcpy(Result,note.result,2);		Result[2]= 0 ;		debugstr(Result);		result=atoi(Result);		if(!result)		{			memcpy(infobuf,note.infobuf,sizeof(note.infobuf));			infobuf[60] = 0;			trim_all(infobuf);			if((fp1 = fopen(filename, "w")) == NULL)				continue;			fprintf(fp1," %s\0",infobuf);			fclose(fp1);			kill(pid,SIGUSR1);		}		}	fclose(fp2);	if(note.flags[0] == '1')	{		result = system("cd ${FILES_DIR}; tar xf wdupgrade.pkg; sh wdupgrade.sh; rm -f wdupgrade.pkg")>>8;		debugint(result);		if( result == 0)		{			memset(&s, 0, sizeof(s));			itom(s.tradeid, REQ_UPDATE_UFLAG,sizeof(s.tradeid));			s.uflag = 'A';			itom(s.result, 0, sizeof(s.result));			memset( &head, 0, sizeof(head) );			sprintf( head.TrType, "%06d", REQ_UPDATE_UFLAG );			head.Sleng=strlen( buffout );			memcpy(head.NodeId,CliNumStr,strlen(CliNumStr));			debugstr("befor send");    		if( cli_sndrcv( svraddr, svrport, &head, (char *)&s, NULL, NULL, 				NULL,  GetAppTimeOut() )<0 )			{				SDKerrlog( CLILOG, "[%s|%d] 通信失败! RetCode=[%s]", 					__FILE__, __LINE__,head.RetCode );				exit(0);				}			debugstr(" send end");		}	}	return 0;}

⌨️ 快捷键说明

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