Tente projetar seu programa para ficar sem estado - leia de sensores, receba dados de portas de rede, grave em portas seriais e / ou em conexões de rede, etc, sem gravar em discos rígidos / memória flash. Você poderia ter acesso somente leitura a um arquivo de configuração, tudo bem.
Se isso não for possível, use o sistema de arquivos journalling (ou seja, ext4) e monte-o com opções sync, journal = data. Isso fará mais gravações na mídia de armazenamento, mas garantirá consistência - se a energia acabar no meio de uma gravação, o programa verá a versão antiga do arquivo ou a nova. Você também precisa adicionar alguma funcionalidade de checkpoint / restart ao seu programa.
Outro conselho: mantenha seus arquivos fechados. Sempre que precisar armazenar alguma coisa, abra, procure, escreva, feche.
Um pouco mais de informações sobre o que você está tentando alcançar seria útil.