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