#include "xbt/system_error.hpp"
#include <memory>
+#include <string>
#include <fcntl.h>
#ifdef __linux__
namespace simgrid {
namespace mc {
-static void run_child_process(int socket, const std::function<void()>& code)
+template <class Code> void run_child_process(int socket, Code code)
{
/* On startup, simix_global_init() calls simgrid::mc::Client::initialize(), which checks whether the MC_ENV_SOCKET_FD
* env variable is set. If so, MC mode is assumed, and the client is setup from its side
// modifying its .got.plt during snapshot.
setenv("LC_BIND_NOW", "1", 1);
- char buffer[64];
- int res = std::snprintf(buffer, sizeof(buffer), "%i", socket);
- xbt_assert((size_t)res < sizeof(buffer) && res != -1);
- setenv(MC_ENV_SOCKET_FD, buffer, 1);
+ setenv(MC_ENV_SOCKET_FD, std::to_string(socket).c_str(), 1);
code();
}