Я пытаюсь изменить программу, но она выдает ошибку (-1).
execlp("history","history", NULL)
Я не знаю, где находится история.
В некоторых оболочках, включая GNU bash, history - это встроенная команда , например cd is (а cd вызывает chdir (2 ) ; нет полезного /bin/cd исполняемого файла, да и быть не может). Так что такого исполняемого файла нет.
history
cd
/bin/cd
Вместо этого вам следует рассмотреть возможность использования библиотеки GNU readline в вашей программе. См. Сначала readline (3) , затем history (3) .
Если у вас есть некоторые history исполняемые файлы в ваш $PATH (странная установка), используйте execvp (3) .
$PATH
В качестве альтернативы закодируйте свою shell function ( например, определено в вашем ~/.bashrc) с использованием этого history встроенного.
~/.bashrc