int main() { // 初始化线程同步变量 sem_init(&sem,0,0); // 从环境变量中读取登录信息 char * CTP_FrontAddress = getenv("CTP_FrontAddress"); if ( CTP_FrontAddress == NULL ) { printf("环境变量CTP_FrontAddress没有设置\n"); return(0); } char * CTP_BrokerId = getenv("CTP_BrokerId"); if ( CTP_BrokerId == NULL ) { printf("环境变量CTP_BrokerId没有设置\n"); return(0); } strcpy(userLoginField.BrokerID,CTP_BrokerId); char * CTP_UserId = getenv("CTP_UserId"); if ( CTP_UserId == NULL ) { printf("环境变量CTP_UserId没有设置\n"); return(0); } strcpy(userLoginField.UserID,CTP_UserId); char * CTP_Password = getenv("CTP_Password"); if ( CTP_Password == NULL ) { printf("环境变量CTP_Password没有设置\n"); return(0); } strcpy(userLoginField.Password,CTP_Password); // 创建TraderAPI和回调响应控制器的实例 CThostFtdcTraderApi *pTraderApi = CThostFtdcTraderApi::CreateFtdcTraderApi(); CTraderHandler traderHandler = CTraderHandler(); CTraderHandler * pTraderHandler = &traderHandler; pTraderApi->RegisterSpi(pTraderHandler); // 设置服务器地址 pTraderApi->RegisterFront(CTP_FrontAddress); // 链接交易系统 pTraderApi->Init(); // 等待服务器发出登录消息 sem_wait(&sem); // 发出登陆请求 pTraderApi->ReqUserLogin(&userLoginField, requestID++); // 等待登录成功消息 sem_wait(&sem); //////////////////////////////////////////////////////////////////////////////////////////////// ///请求查询转帐银行 /////////////////////////////////////////////////////////////////////////////////////////////// // 定义调用API的数据结构 CThostFtdcQryTransferBankField requestData; // 确保没有初始化的数据不会被访问 memset(&requestData,0,sizeof(requestData)); // 为调用结构题设置参数信息 ///银行代码 TThostFtdcBankIDType char[4] strcpy(requestData.BankID,""); ///银行分中心代码 TThostFtdcBankBrchIDType char[5] strcpy(requestData.BankBrchID,""); // 调用API,并等待响应函数返回 int result = pTraderApi->ReqQryTransferBank(&requestData,requestID++); sem_wait(&sem); ///////////////////////////////////////////////////////////////////////////////////////////////// // 拷贝用户登录信息到登出信息 strcpy(userLogoutField.BrokerID,userLoginField.BrokerID); strcpy(userLogoutField.UserID, userLoginField.UserID); pTraderApi->ReqUserLogout(&userLogoutField, requestID++); // 等待登出成功 sem_wait(&sem); printf("主线程执行完毕!\n"); return(0); }