Запись в файл с помощью exec - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу записать в текстовый файл, который я создал, используя функцию exec

Что я пробовал до сих пор:

int fd[2];
pipe(fd);
dup2(fd[1],1);
char * echo_args[] = {"/bin/echo" , "I want to write this >> ~/.filename", NULL};
execv(echo_args[0], echo_args);

Это привело к следующему выводу in терминал :

I want to write this >> ~/.filename

Мне известно, что существует проблема, связанная с форматированием, как обычно при использовании echo Мне нужно, чтобы мой текст был между кавычками и массиву нужна вся команда между кавычками, однако использование char * echo_args[] = {"/bin/echo" , " "I want to write this" >> ~/.filename", NULL} привело к ошибкам компиляции:

test.c:103:42: error: expected '}'
   char * echo_args[] = {"/bin/echo" , ""I want to write this">> ~/.file...
                                         ^
test.c:103:25: note: to match this '{'
   char * echo_args[] = {"/bin/echo" , ""I want to write this">> ~/.file...

Любая идея о том, что я могу сделать, чтобы исправить этот или любой другой альтернативный способ написания текста в файл с помощью exe c? Кроме того, я знаю, что в C есть функциональные возможности файлов без необходимости exec или чего-либо из этого, но я должен использовать это.

1 Ответ

0 голосов
/ 07 апреля 2020

Если вам нужны двойные кавычки внутри строки, вы можете экранировать их с помощью \".

char * echo_args[] = {"/bin/echo" , "\"I want to write this >> ~/.filename\"", NULL};
...