Enviado em 17/09/2019 - 07:20h
Bom Dia galera, estou começando agora no C++ e gostaria de saber como deixar esse código executável no terminal do linux, já que a API do windows (#include <windows.h>) não permite. Agradeço desde já. Abraços#ifndef CONNECTOR_H
#define CONNECTOR_H
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
STARTUPINFO sti = {0};
SECURITY_ATTRIBUTES sats = {0};
PROCESS_INFORMATION pi = {0};
HANDLE pipin_w, pipin_r, pipout_w, pipout_r;
BYTE buffer[2048];
DWORD writ, excode, read, available;
void ConnectToEngine(char* path)
{
pipin_w = pipin_r = pipout_w = pipout_r = NULL;
sats.nLength = sizeof(sats);
sats.bInheritHandle = TRUE;
sats.lpSecurityDescriptor = NULL;
CreatePipe(&pipout_r, &pipout_w, &sats, 0);
CreatePipe(&pipin_r, &pipin_w, &sats, 0);
sti.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
sti.wShowWindow = SW_HIDE;
sti.hStdInput = pipin_r;
sti.hStdOutput = pipout_w;
sti.hStdError = pipout_w;
CreateProcess(NULL, path, NULL, NULL, TRUE,0, NULL, NULL, &sti, &pi);
}
std::string getNextMove(std::string position)
{
std::string str;
position = "position startpos moves "+position+"\ngo\n";
WriteFile(pipin_w, position.c_str(), position.length(),&writ, NULL);
Sleep(500);
PeekNamedPipe(pipout_r, buffer,sizeof(buffer), &read, &available, NULL);
do
{
ZeroMemory(buffer, sizeof(buffer));
if(!ReadFile(pipout_r, buffer, sizeof(buffer), &read, NULL) || !read) break;
buffer[read] = 0;
str+=(char*)buffer;
}
while(read >= sizeof(buffer));
int n = str.find("bestmove");
if (n!=-1) return str.substr(n+9,4);
return "error";
}
void CloseConnection()
{
WriteFile(pipin_w, "quit\n", 5,&writ, NULL);
if(pipin_w != NULL) CloseHandle(pipin_w);
if(pipin_r != NULL) CloseHandle(pipin_r);
if(pipout_w != NULL) CloseHandle(pipout_w);
if(pipout_r != NULL) CloseHandle(pipout_r);
if(pi.hProcess != NULL) CloseHandle(pi.hProcess);
if(pi.hThread != NULL) CloseHandle(pi.hThread);
}
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (9)
Boot do PosRog so funciona em notebook (1)