• 嵌入式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,我直接程序中创建一个文件也很简单,而且这样做也更加安全
     
     

  • 相关阅读:
    洛谷 P1990 覆盖墙壁
    洛谷 P1033 自由落体
    洛谷 P2049 魔术棋子
    洛谷 P2183 巧克力
    poj_1743_Musical Theme(后缀数组)
    Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset
    Codeforces Round #367 (Div. 2) C. Hard problem
    hdu_5831_Rikka with Parenthesis II(模拟)
    hdu_5826_physics(物理题)
    hdu_5821_Ball(贪心)
  • 原文地址:https://www.cnblogs.com/ChenChangXiong/p/14297007.html
Copyright © 2020-2023  润新知