1. 程式人生 > >取當前程序對應之靜態映像檔案的絕對路徑/proc/self/exe

取當前程序對應之靜態映像檔案的絕對路徑/proc/self/exe

提供一個linux  advanced programming 上的得到絕對路徑目錄的函式:
char* get_self_executable_directory ()
{
  int rval;
  char link_target[1024];//目標地址
  char* last_slash;
  size_t result_length;//結果的長度
  char* result;

  /* Read the target of the symbolic link /proc/self/exe.  */
讀取絕對路徑
  rval = readlink ("/proc/self/exe", link_target, sizeof (link_target) - 1);

  if (rval == -1)
    /* The call to readlink failed, so bail.  */
    abort ();
  else
    /* NUL-terminate the target.  */
    link_target[rval] = '\0';
  /* We want to trim the name of the executable file, to obtain the
     directory that contains it.  Find the rightmost slash.  */
找到最後一個/
  last_slash = strrchr (link_target, '/');

如果是空或者是以/開頭,則退出
  if (last_slash == NULL || last_slash == link_target)
    /* Something stange is going on.  */
    abort ();
last_slash儲存的是最後的/的地址
  /* Allocate a buffer to hold the resulting path.  */
link_target開始的地址
  result_length = last_slash - link_target;
  result = (char*) xmalloc (result_length + 1);
  /* Copy the result.  */

  strncpy (result, link_target, result_length);
  result[result_length] = '\0';
  return result;
}

同時可以用以下程式得到絕對路徑
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define MAXBUFSIZE 1024

int main ( int argc, char * argv[] )
{
    char buf[ MAXBUFSIZE ];
    int  count;

    count = readlink( "/proc/self/exe", buf, MAXBUFSIZE );
    if ( count < 0 || count >= MAXBUFSIZE )
    {
        printf( "Failed\n" );
       return( EXIT_FAILURE );
    }
    buf[ count ] = '\0';
    printf( "/proc/self/exe -> [%s]\n", buf );
    return( EXIT_SUCCESS );
}   

相關推薦

當前程序對應靜態檔案絕對路徑/proc/self/exe

提供一個linux  advanced programming 上的得到絕對路徑目錄的函式:char* get_self_executable_directory (){  int rval;  char link_target[1024];//目標地址  char* la

mysql 當前日期對應的週一或週日,日期操作

獲取本週週三對應的日期: select subdate(curdate(),date_format(curdate(),'%w')-3) as '本週三對應日期'  獲取對應日期是周幾: SELECT date_format('2017-04-19','%w');

Java 如何匯出記憶體檔案

記憶體溢位自動匯出 -XX:+HeapDumpOnOutOfMemoryError // 當記憶體溢位的時候自動匯出映像檔案 -XX:HeapDumpPath=./ // 匯出映像檔案的路徑 上面的這兩個JVM 引數就可以在發生記憶體溢位的時候,自動將 heap 匯出到設定的路徑

如何製作蘋果系統dmg檔案

原文地址::https://jingyan.baidu.com/article/fa4125acf4b0c728ac7092b0.html   相關文章 1、用Mac OS X系統映像檔案(dmg)安裝系統----https://wenku.baidu.co

利用vmware虛擬機器建立一個軟盤檔案

很多同學在做軟盤linux系統實驗時,大都為第一步操作發愁,這什麼是軟盤從來沒有見過。沒有軟盤,如何建立一個軟盤映像檔案呢?這是個問題。 但是我們可以利用vmware虛擬機器軟體提供的一個功能很容易的建立一個軟盤映像檔案,作為軟盤來使用。很方便的。 具體步驟如下: 1.關閉虛擬機器,注意不是關閉vm

mount一個lvm格式的磁碟檔案

如果是非lvm格式的,則非常方便,給mount命令傳遞offset引數即可,例如:[[email protected] xen-images]# fdisk -lu centos_vm1 last_lba(): I don't know how to handle

手動一步一步來製作備份Raspberry Pi樹莓派SD卡的img檔案(不用dd命令)

之前複製或者備份樹莓派的SD卡,都是用dd命令全盤複製,可以用,但是這樣有兩大缺點: 1. 慢 2. 一個大的SD卡,比如64G,即使只用了2G,經過dd命令生成的img檔案也會生成一個和整個SD卡容量一樣大小的檔案,即64G   於是,需要有一個可以解決上述問題的製作樹莓

[系統操作][grub4dos]引導硬碟檔案

map --heads=16 --sectors-per-track=63 (hd0,1)/ABOS (hd3) map --hook chainloader (hd3)+1 rootnoverify

Win XP iso檔案(附序列號)

迅雷下載地址: ed2k://|file|zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070%20(ED2000.COM).iso|630237184|EC5191

在VirtualBox中收縮虛擬磁碟檔案

轉自http://blog.sina.com.cn/bobbyworm 由於經常要測試一些軟體,我在VirtualBox虛擬機器中安裝了一套Windows。使用過虛擬機器的朋友都知道,為了節省硬碟空間,一般都使用動態擴充套件映像。它不會在一開始就佔用指定大小的硬碟空間,而是隨著實際使用的需要動態擴充套件。但是

映象檔案檔案

映象檔案(Image)和映像檔案一般只的是同一個概念,而且英文中同稱為Image,如果非要細分,則有以下區別: (1)映象檔案:把外存上的資料和儲存地址資訊儲存在一個檔案內,如Ghost。映象檔案中包含許多資訊,除了資料本身還包含系統檔案、引導檔案、分割槽表資訊等,這樣映象

2440移植Linux Kernel筆記(三)------製作jffs2檔案

你好!這裡是風箏的部落格,歡迎和我一起交流。 如果本篇部落格對您有幫助,或許可以在下方評論給我留個言。 之前我們把busybox安裝到/work/nfs/root/目錄下. 現在: cd

html圖絕對路徑和相對路徑,鏈接

jpg 彈出 足夠 log 路徑和 文件的 加載失敗 索引 markdown html圖像 <img>標簽可以在網頁上插入一張圖片,它是獨立使用的標簽,通過“src”屬性定義圖片的地址,通過“alt”屬性定義圖片加載失敗時顯示的文字,以及對搜索引擎和盲人讀屏軟件

vim底部顯示當前編輯檔案絕對路徑+滑鼠游標定位

vim底部顯示當前編輯檔案絕對路徑 方法一:sudo vi /etc/vim/vimrc 在最後面把下面語句複製貼上進去。 "  這個是雙引號是註釋的含義! " 狀態列 set laststatus=2 " 總是顯示狀態列 highlight StatusLine

使用os獲取當前檔案絕對路徑! 備忘

寫爬蟲,存檔案時遇到了路徑和命名問題,查閱資料,寫在這裡以備忘! import os,sys ''' os.getcwd() Return a string representing the current working directory. Availabilit

VIM底部顯示當前編輯檔案絕對路徑

vi /etc/vim/vimrc 底部新增 57 " 狀態列 58 set laststatus=2 " 總是顯示狀態列 59 highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue 60

Python開發簡單爬蟲靜態網頁抓篇:爬“豆瓣電影 Top 250”電影數據

模塊 歲月 python開發 IE 女人 bubuko status 公司 使用 目標:爬取豆瓣電影TOP250的所有電影名稱,網址為:https://movie.douban.com/top250 1)確定目標網站的請求頭: 打開目標網站,在網頁空白處點擊鼠標右鍵,

【舊文章搬運】獲取並修改PEB中的路徑,命令列和當前目錄

原文發表於百度空間,2008-7-24 當時對UNICODE_STRING的使用還有點問題,導致最終效果圖中字串被截斷了========================================================================== 先從分析PEB開始吧.感覺分析這個東

第九節:fillder抓APP數據程序

inf 工具 開始 自帶 long wifi user 用戶 點擊 1、下載fillder ,fillder官網:https://www.telerik.com/fiddler 2、安裝好後設置fillder: 工具—>選項,打開設置面板。選擇HTTPS

Android 殺掉當前程序的進程

當前 logs android 我們 ces roi strong 退出 tro 在銷毀所有活動的代碼後面再加上殺掉當前進程的代碼,以保證程序完全退出,殺掉進程的代碼如下所示: android.os.Process.killProcess(android.os.Proce