В C, Как выйти из цикла на основе содержимого файла - PullRequest
0 голосов
/ 29 сентября 2010

Я пытаюсь выйти из цикла while, основываясь на содержимом файла.Файл существует и пуст или заполнен мусором при инициализации программы.Я внешне изменяю файл и хотел бы, чтобы этот цикл завершился в зависимости от того, как был изменен файл.

В настоящее время я запускаю несколько потоков, открываю файл, из которого читаю.Проверьте первый байт.Если это один, я выхожу, иначе запустить цикл.

Когда я хотел бы выйти.Я помещаю единицу в первый байт, но кажется, что мой файл больше никогда не читается.

Хотя оператор цикла и определение переменной каждый цикл выглядит следующим образом:

 while(strcmp(fileContents, "1\n") != 0){

    lengthRead = fread(fileContents, 1, size, isRecording);
    fseek(isRecording, 0, SEEK_SET);

Я знаю, что, вероятно, естьболее простые способы выхода из цикла while извне, но исходя из архитектуры моего проекта, единственный способ увидеть, как это контролировать, - выйти из содержимого файла.

1 Ответ

1 голос
/ 29 сентября 2010

Если ваш другой поток пишет в файл, используя fwrite(), не забудьте вызвать fflush(), чтобы фактически записать изменения в файл (в противном случае они могут остаться в буфере в памяти).

Как упоминал Дейв Джарвис, существует много других альтернатив для синхронизации с другим потоком. Например, если вы используете pthreads, pthread_cond_signal и pthread_cond_wait.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...