процесс — взаимодействие с другими программами; бот в переполнении стека

Я некоторое время изучал cpp, и мне было интересно, как программы взаимодействуют друг с другом и как кодировать такое поведение.

Моя цель состоит в том, чтобы научиться кодировать ботов для простых игр (тральщик …) и автомобильного поведения при запуске, например.

Я хотел бы знать, какие инструменты и библиотеки есть, и если бы вы могли порекомендовать хороший учебник / книгу по этому вопросу. Я предпочитаю подход высокого уровня для начала.

Я использую Windows, а также Linux.

-6

Решение

Заглянуть в Межпроцессное взаимодействие (IPC).

Linux IPC

Windows IPC

Boost.Interprocess поможет абстрагироваться от некоторых различий между каждой платформой.

Пример процесса Глазго

#include <cstdio>
#include <string>
#include <thread>
#include <chrono>
#include <cstdlib>

#include <boost/interprocess/creation_tags.hpp>
#include <boost/interprocess/containers/string.hpp>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/managed_shared_memory.hpp>

using std::string;
using std::char_traits;
using std::chrono::seconds;

using boost::interprocess::allocator;
using boost::interprocess::create_only;
using boost::interprocess::basic_string;
using boost::interprocess::shared_memory_object;
using boost::interprocess::managed_shared_memory;

typedef allocator< char, managed_shared_memory::segment_manager > shared_string_allocator;
typedef basic_string< char, char_traits< char >, shared_string_allocator > shared_string;

int main( int, char** )
{
const char* TAG = "IPC-Example";
const size_t LIMIT = 1024;

shared_memory_object::remove( TAG );

managed_shared_memory wormhole( create_only, TAG, LIMIT );

wormhole.construct< shared_string >( "developer" )( "You call that a capital city?", wormhole.get_segment_manager( ) );

std::this_thread::sleep_for( seconds( 10 * 60 ) );

return EXIT_SUCCESS;
}

Пример процесса Эдинбург

#include <cstdio>
#include <string>
#include <cstdlib>

#include <boost/interprocess/creation_tags.hpp>
#include <boost/interprocess/containers/string.hpp>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/managed_shared_memory.hpp>

using std::pair;
using std::string;
using std::char_traits;

using boost::interprocess::allocator;
using boost::interprocess::basic_string;
using boost::interprocess::open_or_create;
using boost::interprocess::shared_memory_object;
using boost::interprocess::managed_shared_memory;

typedef allocator< char, managed_shared_memory::segment_manager > shared_string_allocator;
typedef basic_string< char, char_traits< char >, shared_string_allocator > shared_string;

int main( int, char** )
{
const char* TAG = "IPC-Example";
const size_t LIMIT = 1024;

managed_shared_memory wormhole( open_or_create, TAG, LIMIT );

auto item = wormhole.find< shared_string >( "developer" );
auto content = item.first;
auto count = item.second;

printf( "Received %lu item.\n", count );
printf( "First items content: %s.\n", content->data( ) );

return EXIT_SUCCESS;
}

строить

g ++ -std = c ++ 11 -o Глазго glasgow.cpp -lpthread -lrt

g ++ -std = c ++ 11 -o Эдинбург Эдинбург.cpp -lpthread -lrt

выполнение

./Эдинбург

./Глазго

Выход

Получил 1 предмет.

Содержание первых предметов: Вы называете это столицей?

Связанный вопрос Как программы общаются друг с другом?

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector