0

我需要使用 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() 调用系统对我的系统的影响。

任何帮助都非常感谢。

4

1 回答 1

3

您在评论中写到文件系统是 cramfs。

cramfs 的维基百科页面

压缩的 ROM 文件系统(或 cramfs)是一个免费(GPL 版)只读 Linux 文件系统,旨在简化和节省空间。它主要用于嵌入式系统和小尺寸系统。

请注意,它是只读的:这意味着您的更改不会被保留。

您需要写入持久存储以保留您的更改。

于 2012-07-16T01:36:44.390 回答