如果我在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 / linuxamd64 /铛/调试/ bin中
(我想知道修改clang的GetExecutablePath()函数是否可行来解决这个问题。)
答案 0 :(得分:1)
这里没有简单的解决方案(对于旧版本的ClearCase):
本地修复
- 在针对VOB / View上下文的应用程序中使用
getcwd()
,get_current_dir_name()
,getwd()
- 创建插入程序库以拦截
醇>readlink()
调用,并修改以使用上述任何调用来返回正确的数据
原因:
/proc/self/exe
会在getcwd
成功时返回不正确的路径。不幸的是,要让
/proc/self/exe
从VOB / View上下文中返回正确的值,需要在Linux内核中进行更改,以允许MVFS“覆盖”当前设置。IBM LTC一直致力于让Linux社区采用此更改,以便我们可以在MVFS中加入新功能。
相关:Bug Sun 6189256。