1*99451b44SJordan Rupprecht #define _POSIX_C_SOURCE 200809L
2*99451b44SJordan Rupprecht 
3*99451b44SJordan Rupprecht #include <cstdio>
4*99451b44SJordan Rupprecht #include <cstdlib>
5*99451b44SJordan Rupprecht #include <cstring>
6*99451b44SJordan Rupprecht #include <libgen.h>
7*99451b44SJordan Rupprecht #include <string>
8*99451b44SJordan Rupprecht #include <unistd.h>
9*99451b44SJordan Rupprecht 
10*99451b44SJordan Rupprecht int main(int argc, char const **argv) {
11*99451b44SJordan Rupprecht   char *buf = strdup(argv[0]); // Set breakpoint 1 here
12*99451b44SJordan Rupprecht   std::string directory_name(::dirname(buf));
13*99451b44SJordan Rupprecht 
14*99451b44SJordan Rupprecht   std::string other_program = directory_name + "/secondprog";
15*99451b44SJordan Rupprecht   execve(other_program.c_str(), const_cast<char *const *>(argv), nullptr);
16*99451b44SJordan Rupprecht   perror("execve");
17*99451b44SJordan Rupprecht   abort();
18*99451b44SJordan Rupprecht }
19