ff70abb98f20e40825b37496681d85ad08529f7b
[awesomized/libmemcached] / testing / lib / ForkAndExec.hpp
1 #pragma once
2
3 #include "common.hpp"
4
5 class ForkAndExec {
6 public:
7 enum { READ, WRITE } pipe;
8
9 ForkAndExec(const char *binary, char **argv);
10 ~ForkAndExec();
11
12 ForkAndExec(const ForkAndExec &) = delete;
13 ForkAndExec &operator = (const ForkAndExec &) = delete;
14 ForkAndExec(ForkAndExec &&) = default;
15 ForkAndExec &operator = (ForkAndExec &&) = default;
16
17 optional<pid_t> operator () ();
18
19 private:
20 int ready[2], pipes[2];
21 const char *binary;
22 char **argv;
23 };