MISRA C:2012 Rule 22.3

Один и тот же файл не должен быть открыт для чтения и записи одновременно на разных потоках

Описание

Определение правила

Один и тот же файл не должен быть открыт для чтения и записи одновременно на разных потоках.

Объяснение

Если файл записан и считан через различные потоки, поведение может быть неопределенным.

Реализация Polyspace

Проверить наличие этого правила можно только с помощью анализа Bug Finder.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

#include <stdio.h>

void func(void) {
    FILE *fw = fopen("tmp.txt", "r+");
    FILE *fr = fopen("tmp.txt", "r");   /* Non-compliant: File open in stream fw*/
}

В этом примере правило нарушается, когда тот же файл tmp.txt открыт в двух потоках. The FILE указатели fw и fr указать на два разных потока здесь.

Проверяйте информацию

Группа: Ресурсы
Категория: Требуемая
Категория AGC: Требуется
Введенный в R2015b