199451b44SJordan Rupprecht #define _POSIX_C_SOURCE 200809L 299451b44SJordan Rupprecht 399451b44SJordan Rupprecht #include <cstdio> 499451b44SJordan Rupprecht #include <cstdlib> 599451b44SJordan Rupprecht #include <cstring> 699451b44SJordan Rupprecht #include <libgen.h> 799451b44SJordan Rupprecht #include <string> 899451b44SJordan Rupprecht #include <unistd.h> 999451b44SJordan Rupprecht main(int argc,char const ** argv)1099451b44SJordan Rupprechtint main(int argc, char const **argv) { 1199451b44SJordan Rupprecht char *buf = strdup(argv[0]); // Set breakpoint 1 here 1299451b44SJordan Rupprecht std::string directory_name(::dirname(buf)); 1399451b44SJordan Rupprecht 1499451b44SJordan Rupprecht std::string other_program = directory_name + "/secondprog"; 15*d00eaa08SRaphael Isemann argv[0] = other_program.c_str(); 16*d00eaa08SRaphael Isemann execv(argv[0], const_cast<char *const *>(argv)); 1799451b44SJordan Rupprecht perror("execve"); 1899451b44SJordan Rupprecht abort(); 1999451b44SJordan Rupprecht } 20