/proc/self/exe的结果在clearcase视图中是不友好的



如果我在clearcase视图中执行二进制文件,并在Linux上查看/proc/self/exe,我会看到以下内容:

$ cd /proc/19220
$ ls -l exe
lrwxrwxrwx 1 peeterj pdxdb2 0 2012-11-30 13:04 exe -> /home/peeterj/views/peeterj_clang-7.vws/.s/00024/8000028250b8f1d1llvm-config

clang-llvm-config程序使用这个输出来试图找出它所在的绝对完全限定路径(我假设argv[0]不是完全限定的)。

有没有一种方法可以在视图中找到它对应的位置。例如,在这种情况下,llvm-config.exe实际上位于:

/vbs/bldsupp/linuamd64/crang/debug/bin

(我想知道修改clang的GetExecutablePath()函数是否可行。)

这里没有琐碎的解决方案(不过对于ClearCase的旧版本):

技术专家"PK27447:在CLEARCASE动态视图中,LINUX上的READLINK()调用返回可执行程序的/PROC/SELF/EXE值的错误路径"建议:

本地修复

  1. 在预定用于VOB/View上下文的应用程序中使用getcwd()get_current_dir_name()getwd()
  2. 创建一个插入器库来拦截readlink()调用,并修改为使用上面的任何调用来返回正确的数据

原因:

/proc/self/exe返回不正确的路径,而getcwd成功。

不幸的是,/proc/self/exe要[从VOB/View上下文中]返回正确的值,需要在Linux内核中进行更改,以允许MVFS"覆盖"当前设置。

IBMLTC一直致力于让Linux社区采用这一更改,这样我们就可以将新功能纳入MVFS中。

相关:Bug Sun 6189256。

相关内容

  • 没有找到相关文章

最新更新