当前位置:嗨网首页>书籍在线阅读

07-执行由文件描述符指代的程序_fexecve()

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

27.2.4 执行由文件描述符指代的程序:fexecve()

glibc自版本2.3.2开始提供函数fexecve(),其行为与execve()类似,只是指定将要执行的程序是以打开文件描述符fd的方式,而非通过路径名。有些应用程序需要打开某个程序文件,通过执行校验和(checksum)来验证文件内容,然后再运行该程序,这一场景就较为适宜使用函数fexecve()。

714.png 当然,即便没有fexecve()函数,也可以调用open()来打开文件,读取并验证其内容,并最终运行。然而,在打开与执行文件之间,存在将该文件替换的可能性(持有打开文件描述符并不能阻止创建同名新文件),最终造成验证者并非执行者的情况。