/ proc / self / exe的结果在一个清晰的视图中是不友好的

时间:2012-11-30 18:19:12

标签: clang 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 / linuxamd64 /铛/调试/ bin中

(我想知道修改clang的GetExecutablePath()函数是否可行来解决这个问题。)

1 个答案:

答案 0 :(得分:1)

这里没有简单的解决方案(对于旧版本的ClearCase):

技术说明“PK27447: WITHIN A CLEARCASE DYNAMIC VIEW, THE READLINK() CALL ON LINUX RETURNS THE WRONG PATH FOR THE EXECUTABLE'S /PROC/SELF/EXE VALUE”建议:

  

本地修复

     
      
  1. 在针对VOB / View上下文的应用程序中使用getcwd()get_current_dir_name()getwd()
  2.   
  3. 创建插入程序库以拦截readlink()调用,并修改以使用上述任何调用来返回正确的数据
  4.   

原因:

  

/proc/self/exe会在getcwd成功时返回不正确的路径。

     

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

     

IBM LTC一直致力于让Linux社区采用此更改,以便我们可以在MVFS中加入新功能。

相关:Bug Sun 6189256