exponenta event banner

MISRA C:2012 Правило 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 указывают на два разных потока.

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

Группа: Ресурсы
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2015b