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

📄 launchprocess.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
#include "sockets.h"#include "LaunchProcess.h"#include <stdio.h>#include "RedirectInput.h"void LaunchProcessSocket(LaunchProcessArg *arg){	DWORD length = 100;	DWORD num_written, num_read;	char msg[1024];	WSAEVENT sock_event;	SOCKET sock;	int ret_val;	RedirectInputThreadArg *rarg = NULL;	HANDLE hRIThread = NULL;	if (ret_val = Simple_create_bind_socket(&sock, &sock_event))	{		printf("Unable to create a socket. Error: %d\n", ret_val);		delete arg;		return;	}	if (Simple_connect(sock, arg->pszHost, arg->nPort))	{		printf("Unable to connect to %s on %d\n", arg->pszHost, arg->nPort);		delete arg;		return;	}	sprintf(msg, "-dir\"%s\"-env\"%s\"%s", arg->pszDir, arg->pszEnv, arg->pszCmdLine);	length = strlen(msg)+1;	if (SendBlocking(sock, (char*)&length, sizeof(int), 0) == SOCKET_ERROR)	{		printf("SendBlocking length failed. Error: %d\n", WSAGetLastError());		Simple_closesocket(sock, sock_event);		delete arg;		return;	}	if (SendBlocking(sock, msg, length, 0) == SOCKET_ERROR)	{		printf("SendBlocking msg failed. Error: %d\n", WSAGetLastError());		Simple_closesocket(sock, sock_event);		delete arg;		return;	}		if (arg->i == 0)	{		rarg = new RedirectInputThreadArg;		rarg->hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);		rarg->hSock = sock;		DWORD dwThreadID;		hRIThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RedirectInputSocketThread, rarg, 0, &dwThreadID);	}	// Redirect output	char pBuffer[1024];	HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);	while (num_read = ReceiveSome(sock, sock_event, pBuffer, 1024, 0))	{		if ((num_read == SOCKET_ERROR) || (num_read == 0))		{			Simple_closesocket(sock, sock_event);			delete arg;			return;		}		WriteFile(hStdOut, pBuffer, num_read, &num_written, NULL);	}	if (arg->i == 0)	{		SetEvent(rarg->hEvent);		WaitForSingleObject(hRIThread, 5000);	}	Simple_closesocket(sock, sock_event);	delete arg;}

⌨️ 快捷键说明

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