Системный вызов, который вы ищете, execve
. Он имеет связанные функции execl
, execlp
, execle
, execv
, execvp
, в зависимости от того, как вы хотите сохранить и передать аргументы командной строки и / или переменные среды. Но суть в том, что все эти функции не позволят вызывающей программе делать что-либо еще, поскольку новая программа заменяет существующую.
Если вы хотите запустить программу, дождитесь ее завершения, а затем возобновите исходную программу, попробуйте вместо этого библиотечную функцию system
. (Хотя system
требует /bin/sh.)
Если вам нужно что-то более изощренное, вам, вероятно, придется объединить fork
и waitpid
с одной из exec*
функций. На страницах руководства и в Интернете есть множество примеров того, как комбинировать эти функции.