Первый аргумент execv
- это программа, которую вы хотите запустить, а второй - массив, содержащий аргументы. Кроме того, execv
требует полного пути к программе; Вы можете использовать execvp
для поиска программы в пути выполнения. Кроме того, первым аргументом программы является имя самой программы.
Поэтому вы хотите "/bin/cat"
в качестве первого аргумента, а не "cat text_file"
, а [| "cat"; "text_file" |]
в качестве второго аргумента (или вызовите execvp
и передайте "cat"
в качестве первого аргумента).
Однако, чаще всего вы действительно хотите system
, а не execv
.
Обратите внимание, что system
позволяет вам передавать одну строку так, как вы хотите, и что execv
(в отличие от system
) никогда не возвращается, т. Е. Как только вы вызываете execv
, ваша программа завершена, и приложение, которое вы вызываете, вступает во владение процесс.