обратный вызов при успешной записи в файл, C - PullRequest
0 голосов
/ 29 апреля 2019

Пробуя свои силы в написании некоторых C-скриптов, у меня есть некоторый код, который должен сохранить строку в файл перед перезагрузкой системы.Оба работают по отдельности, но попытка записи в файл непосредственно перед перезагрузкой завершается неудачей ...

int writeToConfFile(char* filename, char* newConf) {

  FILE *fp;
  int status;

  fp = fopen(filename, "w");
  fprintf(fp,"%s",&newConf[0]);
  status = fclose(fp);
  return status;
}


int main(int argc, char **argv){
  char extraString[1024];
  strcpy(extraString,"0");
  writeToConfFile("/etc/filename", extraString);  
  reboot(RB_AUTOBOOT);
}

добавление sleep(10) между writeToConfFile и reboot делает свое дело, но я хотел бы сделать это ваккуратнее.

edit: os - это сильно настроенный устаревший debian.

edit2: попытался изменить writeToConfFile до конца так:

  fp = fopen(filename, "w");
  fprintf(fp,"%s",&newConf[0]);
  fflush(fp);
  status = fclose(fp);
  return status;

, но это не такне работает либо

1 Ответ

0 голосов
/ 07 мая 2019

Как предложено mathieu и jamieguinan , вызов sync () перед перезагрузкой гарантирует, что изменения будут записаны на диск, поэтому код заканчивается таким образом:

writeToConfFile("/etc/filename", extraString);  
sync();
reboot(RB_AUTOBOOT);
...