(ARMでカーネル2.6.29を再起動するために)reboot()システムコールを使用する必要があり、以下のコードを試しました:
#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、イーサネット、charドライバーを使用していて、reboot()呼び出しシステムがシステムに与える影響を知りたいだけです。
どんな助けでも大いに感謝します。