| | 1 | [wiki:Component SocLib Components General Index] |
| | 2 | |
| | 3 | = Component description = |
| | 4 | |
| | 5 | This component is a common utility component. |
| | 6 | |
| | 7 | This creates a wrapper to a process. The wrapped process will be executed with the simulator, wrapping code may: |
| | 8 | * read stdout from wrapped process |
| | 9 | * poll stdout from wrapped process |
| | 10 | * write to wrapped process' stdin |
| | 11 | * send signals to wrapped process |
| | 12 | |
| | 13 | = Component usage = |
| | 14 | |
| | 15 | == Object == |
| | 16 | |
| | 17 | {{{ |
| | 18 | soclib::common::ProcessWrapper *process; |
| | 19 | }}} |
| | 20 | |
| | 21 | == Instanciation == |
| | 22 | |
| | 23 | |
| | 24 | {{{ |
| | 25 | soclib::common::ProcessWrapper( |
| | 26 | const std::string &cmd, |
| | 27 | const std::vector<std::string> &argv ); |
| | 28 | }}} |
| | 29 | |
| | 30 | cmd:: |
| | 31 | The command to launch, it will be looked for in $PATH |
| | 32 | argv:: |
| | 33 | The argv in a standart unix style. argv[0] should look like cmd. |
| | 34 | |
| | 35 | == Usage == |
| | 36 | |
| | 37 | {{{ |
| | 38 | std::vector<std::string> argv; |
| | 39 | argv.push_back("date"); |
| | 40 | argv.push_back("+%s"); |
| | 41 | soclib::common::ProcessWrapper process("date", argv); |
| | 42 | |
| | 43 | char buffer[128]; |
| | 44 | process.read( buffer, 128 ); |
| | 45 | std::cout << "Date is " << buffer << " seconds since EPOCH" << std::endl; |
| | 46 | }}} |
| | 47 | |