Использование dup2 и execvp в c
Я пишу программу, которая открывает 2 файла (файл1 только для чтения и файл2 только для записи), затем открывает дочерний процесс, заменяет stdin
с file1
а также stdout
с file2
с помощью dup2()
а затем запускает некоторую команду оболочки (sort
,cat
,tr
или что-то в этом роде). Текст должен прибыть из stdin(file1)
и быть написано stdout(file2)
, Вот код, который у меня есть. Это не полный код, это просто функция, которую вызывает дочерний процесс.
void childProcess(int fd[],char* arguments[])
{
int f1=atoi(arguments[0]); //gets file descriptor number of file1
int f2=atoi(arguments[1]); //fd number of file2
dup2(fd[f1],0); //changes stdin to file1
dup2(fd[f2],1); //changes stdout to file2
char* myText[1024];
//not sure how to get the content of stdin into myText
char*execArgs[] = {"cat",myText,NULL};
execvp("cat",execArgs);
}
Итак, две проблемы, которые у меня есть: я не знаю, как получить весь stdin(file1)
в myText
а также, программа говорит:
cat: no such file or directory.
Пожалуйста помоги.