Я хочу запустить что-то вроде
cat file.tar | base64 | myprogram -c "| base64 -d | tar -zvt "
Я использую execlp
для запуска процесса.
Когда я пытаюсь запустить что-то вроде cat
, это работает, но если япопробуйте запустить base64 -d | tar -zvt
, это не работает.
Я посмотрел на команды bash и обнаружил, что могу запустить bash и сказать ему, чтобы он запускал другие программы.Так что это что-то вроде:
execlp ("bash", "-c", "base64 -d | tar -zvt", NULL);
Если я запускаю его на терминале, он работает хорошо, но с использованием execlp
он не работает.Если я использую execlp("cat", "cat", NULL)
, это работает.
Кто-то знает, как использовать параметр -c
в execlp для выполнения нескольких "программ"?Я не могу использовать систему, потому что я использую pipe и fork.
Теперь я заметил, что если я пытаюсь использовать execlp ("bash", "bash", "-c", "base64", NULL) ...Ничего не произошло.Если я использую execlp ("cat", NULL), все в порядке ... Я пишу в стандартный ввод ... Я не знаю, в чем проблема с bash -c base64 .. потому что, если я запускаю на терминале echo"ASD" |bash -c "кошка", она идет хорошо