美文网首页
【C/C++ execl异常】No such file or d

【C/C++ execl异常】No such file or d

作者: blue_smile | 来源:发表于2018-10-30 10:12 被阅读0次

    今天遇到一个因为windows文件上传Linux导致执行失败的问题,这里做一个记录

    背景

    平台支持自定义组件功能,允许用户上传可执行文件(bin/python/shell等等)。有用户反馈上传的python脚本组件输出不符合预期,遂进行定位。

    系统报错:

    定位问题异常点是fork后调用execl失败,系统报错errno(2),错误信息为No such file or directory,但实际情况是拉起的文件无法执行。

    异常点:python文件存在且权限正常

    1、通过su -命令切换至程序所属用户:用户侧权限可以查看到文件,使用python 文件名可正确执行
    2、gdb跟踪程序:断点到程序执行到对应位置通过access函数定位程序具备文件的读/执行权限,但继续向后走调用execl会失败并返回errno(2),错误信息为No such file or directory

    问题分析及原因定位

    1、由上述分析可以看出,文件确实存在,但是因为其他原因导致执行时报错文件不存在
    2、异常原因:用户侧windows下编辑文件,使文件带有windows换行符。Linux解析时发现最后带有特殊字符,致使文件第一行解析器解析失败,完整报错信息(/usr/bin/python^M: bad interpreter: No such file or directory

    解决方案

    通过dos2unix函数,可以将文件装换为Linux下的问题,转换后就可以正常执行了。

    思考

    Linux下的报错信息也不绝对,还是要根据时间情况进行分析
    Windows下可以通过file命令来进行识别,dos2unix来进行转换

    image.png

    相关文章

      网友评论

          本文标题:【C/C++ execl异常】No such file or d

          本文链接:https://www.haomeiwen.com/subject/atbwtqtx.html