Execlp не мутирует правильно - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь изменить программу, но она выдает ошибку (-1).

execlp("history","history", NULL)

Я не знаю, где находится история.

1 Ответ

1 голос
/ 27 мая 2020

В некоторых оболочках, включая GNU bash, history - это встроенная команда , например cd is (а cd вызывает chdir (2 ) ; нет полезного /bin/cd исполняемого файла, да и быть не может). Так что такого исполняемого файла нет.

Вместо этого вам следует рассмотреть возможность использования библиотеки GNU readline в вашей программе. См. Сначала readline (3) , затем history (3) .

Если у вас есть некоторые history исполняемые файлы в ваш $PATH (странная установка), используйте execvp (3) .

В качестве альтернативы закодируйте свою shell function ( например, определено в вашем ~/.bashrc) с использованием этого history встроенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...