аргументами?
Аргументы командной строки получаешь из main или при помощи API OS. https://stackoverflow.com/questions/6256602/c-launch-new-process-and-terminate-existing-one
Такое ощущение, что есть много подводных. Например, может передаваться относительный путь. В ходе программы рабочая директория меняться и когда мы создаем процесс по этому относительному пути, то все разломается.
Да, есть такое, в моём случае хватает использования OS specific функций. Надо немного в google поискать и ты всё найдёшь. Уверен, ты не первый и не последний, кто задаётся этим вопросом. Надо поискать что-то из стандартной библиотеки C++, почитать какие есть гарантии и отталкиваться уже от них. Вроде как нет каких-то строгих гарантий, что будет находиться в argv. Может быть только имя исполняемого файла, а может, и полный путь до него.
GetModuleFileName есть, если кому-то интересно будет
а еще бинарь могут удалить или переименовать (по крайней мере на линуксе)
Но это только для windows.
Вообще интересно, зачем ты хочешь запускать новый процесс с тем же бинарем, а не просто тред
Да. Может есть кроссплатформа, но мне и этого хватает
Потому что я костыли поверх кривонаписанной программы пишу, потому что куча глобального стейта и желания с этим разбираться нет
Хочешь для лабы реализовать многопоточность на winapi без CreateThread? ... А, у тебя не этот случай.
У меня прувер однопоточный, который писал другой студент года 4 назад. Мне надо запустить несколько инстансов прувера с разными настройками, но так как там ничего такого не предполагалось, то прувер в глобальный стейт пишет.
Почему бы не написать лаунчер хоть на питоне/баше/cmd вместо логики запуска самого себя?
Хотел потом данные шаренные прикручивать и логику усложнять.
Так переписывай это провер
Обсуждают сегодня