我正在为嵌入式 Linux(debian-arm)设备编写 C 程序。在某些情况下,例如,如果系统/程序上发生致命错误,我希望程序在通过system("reboot");
记录错误后重新启动系统syslog()
。我的程序包括multithreads
, UDP sockets
, 几个fwrite()/fopen()
,malloc()
调用, ..
我想问几个问题,除了syslog
. 我很高兴知道经验丰富的程序员是如何完成这些事情的。
是否有必要在重新启动之前关闭打开的套接字 (UDP) 和线程?如果是这种情况,是否有关闭所有打开的套接字和线程的函数/系统调用?如果线程需要关闭并且没有这样的全局函数/调用来结束它们,我想如何
pthread_exit(NULL);
为每个特定线程执行?我需要去使用类似goto
结束每个线程的东西吗?程序应该如何关闭
fopen
和fwrite
使用的文件?是否有一个全局调用来关闭正在使用的文件,或者我是否需要手动找出正在使用的文件然后fclose
用于每个文件?我在论坛上看到了一些示例,使用了fflush()
,flush()
,sync()
,..,您会推荐使用哪一个?在一般情况下,如果使用所有这些功能会导致任何问题(尽管这些功能可能是不必要的)?没有必要给
free
变量malloc
分配空间吧?
您是否建议执行任何其他任务?