我需要使用reboot()系统调用(用ARM重启内核2.6.29),我尝试了下面的代码:
#include <stdio.h>
#include <linux/reboot.h>
#include <unistd.h>
int main()
{
reboot(LINUX_REBOOT_CMD_RESTART);
}
效果很好!但是我想知道的是重新启动内核后丢失了正在保存的文件。 我的意思是如果使用此代码,重启后不会保存“url”文件。
int main()
{
FILE *pFile = fopen("url", "a"); // for .txt file
// write to file/read from file ... etc
fclose(pFile);
int fdUART = open("/dev/ttySAC0", O_RDWR | O_NOCTTY | O_NDELAY);
// some operations on UART port
close(fdUART);
/* Ethernet raw package process*/
/* Char dev driver open and communicate with FPGA fifo */
/* so on */
reboot(LINUX_REBOOT_CMD_RESTART);
}
我正在使用UART,以太网,字符驱动程序,只是想知道reboot()调用系统对我的系统的影响。
任何帮助高度赞赏谢谢。
答案 0 :(得分:3)
您已在评论中写到文件系统是cramfs。
来自the Wikipedia page for cramfs:
压缩ROM文件系统(或cramfs)是一个免费的(GPL)只读Linux文件系统,旨在简化和节省空间。它主要用于嵌入式系统和小型系统。
请注意,它是只读的:这意味着您的更改不会被保留。
您需要写入持久存储以保留更改。