2012-11-30 49 views
1

不友好如果我執行ClearCase視圖中的二進制和查看/ proc /自/ EXE爲在Linux上,我看到類似以下內容:結果/ EXE是在ClearCase視圖

$ 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 

該鐺LLVM-配置程序,沒有不合理,使用該輸出來嘗試弄清楚,它位於絕對完全合格的路徑(I萬一argv的假設[0]不是完全限定)。

有沒有一種方法可以在視圖中找到它所對應的位置。例如,在這種情況下,LLVM-配置exe文件實際上是:

/VBS/bldsupp/linuxamd64 /鐺/調試/ bin中

(我想知道,如果它是可行的修改鐺的GetExecutablePath()函數來這裏想出解決辦法)

回答

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. 使用getcwd()get_current_dir_name()getwd()在應用程序將於一VOB /查看上下文
  2. 創建一箇中介庫攔截readlink()調用,修改使用上述任何調用返回正確的數據

原因:

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

不幸的是,對於/proc/self/exe [從VOB/View上下文中]返回適當的值需要在Linux內核中進行更改,以允許MVFS「覆蓋」當前設置。

IBM LTC一直致力於讓Linux社區採用此更改,以便我們可以將新功能併入MVFS中。

相關:Bug Sun 6189256

+0

另見:http://www-01.ibm.com/support/docview.wss?uid = swg21260068 – VonC