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 открыт в двух потоках. FILE указатели fw и fr укажите на два различных потока здесь.

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

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