Си запись в файлы два и более раз подряд. Не срабатывает fgets

Рейтинг: 0Ответов: 1Опубликовано: 21.04.2023

При вызове функции в первый раз все ок! Файл создается и записывается должным образом. Но при попытке вызвать функцию еще раз она создает просто пустой файл( Пробовал читать посимвольно - та же история Чистка буфера не помогает(

void from_prog_to_file(char path_to_prog[], char path_to_temp_file[]){
    FILE *prog = popen(path_to_prog, "r");
    FILE *temp = fopen(path_to_temp_file, "w");
    char buffer[256];
    while((fgets(buffer, 256, prog)) != NULL) {
        printf("%s", buffer);
        fputs(buffer, temp);
    }
    fclose(temp);
    fclose(prog);
}

Ответы

▲ 2

Вы используете fclose для закрытия потока полученного через popen, для него нужно использовать pclose.

Примеры: GNU Pipe to a Subprocess