Document

当你觉得迷茫的时候,那就多学习

嵌入式linux编译移植 vsftpd 源码修改

相关地址
 
 
 
查了那么多版本,最终选的一个 vsftpd-2.3.4版本,使用3.0.2或者3.0.3在运行的时候都提示段错误
 
 
1.编译vsftpd-2.3.4
 
修改这两个地方就可以直接编译 make -j20
 
经过flashxp提示的Log信息,定位到ftp每次上传完成都会调用 postlogin.c 中的函数
 
vim postlogin.c +912
 
 
修改为在上传完成以后,在/tmp/下面创建一个文件,然后写一个脚本或者程序去检测这个文件夹下面是否生成了finish.txt文件,就知道是不是成功的传输完成,我这里需要做的就是在传输完成以后,给一个sync同步命令,防止在系统突然掉电的时候30秒以内,会出现不保存的情况
 
2. 检测文件是否完成
 
下面是检测文件是否存在的程序,也可以使用脚本去检测,但是脚本的还是总是提示一些无法屏蔽,这样在debug终端一直输出看着不好,所以选择使用这样的方式,编译以后在启动脚本中运行下面命令,就可以做到一直检测
 
app_check & /dev/null
程序中延时了0.4秒,也就是传输完成以后在0.4秒以内就会sync,如果不延时速度更快,但是会造成cpu一直工作,相当于热机满载一直工作,这样对cpu寿命有很大影响,加入了延时就可以减少cpu使用率
 
本来可以通过修改系统缓存写入到磁盘的时间,这样也可以加快缓存写入,但是这样还是治标不治本,因为大多数时候是不需要使用ft[传输文件的
 
本来我是考虑在传输完成以后直接使用 system(“sync”) ,但是在使用的时候,发现使用system以后就会造成vsftp无法使用,直接不能传输,这是一个很严重的问题,可能是system打乱了程序的机制,集体没有研究,所以为了保持程序的完整性,最好不要使用system,我直接程序中创建一个文件也很简单,而且这样做也更加安全
 
 

posted @ 2021-01-19 11:24  陈昌雄  阅读(619)  评论(0)    收藏  举报
Document

联系方式

qq: 2224505189

微信: 1935442635

奖励博主