Я пишу программу, которая создает текстовые файлы input.txt
и использует ее в качестве ввода exec()
.У меня проблемы с перенаправлением вывода в другой файл output.txt
, и они, похоже, связаны с записью input.txt
.
Если я использую fwrite(array, 4, 1, file)
, перенаправление работает.Если я использую fwrite(array, sizeof(array), 1, file)
или fprint
, это не так.
FILE *finput = fopen("input.txt", "w");
for (int i=0; i<dimension; i++)
{
char c; // I get it from another file, it isnt't important.
char arr[1];
arr[0] = c;
// WORKING LINE OF CODE
fwrite(arr, 4, 1, finput);
// NOT-WORKING LINE OF CODE
// fwrite(arr, sizeof(arr), 1, finput);
// ANOTHER NOT-WORKING LINE OF CODE
// fprintf(finput, "%c", c);
}
pid_t pid;
int status = -1;
pid = fork();
if (pid == -1)
{
printf("ERROR.");
}
else if ( pid == 0)
{
int fdOutput = creat("output.txt", 0777);
dup2(fdOutput, 1);
dup2(fdOutput, 2);
close(fdOutput);
// awkScript is an awk program string
int executionResult = execl("/usr/bin/gawk", "gawk", awkScript, "input.txt", (char*)NULL);
// ...
}
Если я напишу рабочую строку кода, в конце программы у меня будет какой-то текст в файле output.txt
,В противном случае, он полностью пуст.
Самое странное, что input.txt
работает в любом случае, оно всегда правильно написано.Поэтому я не могу понять, почему это должно быть связано с его написанием.Если я выполню команду:
gawk $awkScript input.txt
Вывод будет напечатан всеми тремя способами, используемыми для записи input.txt