做智能家具项目遇到的问题

做智能家具项目遇到的问题

方式用轮询的方式检测GPIO口的时候,只要一循环运行读取GPIO口的操作,树莓派的硬盘空间迅速减少,原因是因为驱动程序中的printk函数输出的内容会被 /var/log/message /var/log/syslog 文件所保存,所以要清除驱动程序中的pritfk函数。

ncdu命令

Linux下面的ncdu命令,可以快速的查看当前文件夹下,各个文件以及各个文件夹占用硬盘的大小。

如下图所示

image-20230712195013795

当使用该命令时,可以图像画的看到各个文件所占的大小。

问题解决

可以发现最占用硬盘的是 syslog messages kern.log日志文件。

首先在root 用户下使用

echo " " > /var/log/kern.log
echo " " > /var/log/syslog
echo " " > /var/log/messages

这三个命令将这三个文件清空,然后使用cat messages打印文件里面的内容知道,是驱动程序的printk造成的。

所以我们将驱动程序中的printk函数都删除即可。

scoket 客户端断开链接的时候会导致服务崩溃

最近在写linux下的socket通信,正常通信是没有问题,客户端没有连接服务器的时候,程序正常运行,当客户端连接服务器,并且在线的时候,程序也能正常运行,但是当客户端断开连接,服务器就自动断开,导致程序退出。

后面经过分析,socket通信断开后,会导致管道破裂,所以程序被迫终止。

解决办法

signal(SIGPIPE, SIG_IGN);//手动捕获管道破裂信号,并忽略
posted @ 2023-09-01 14:11  徐博正  阅读(19)  评论(0)    收藏  举报