欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言獲取程序名稱的四種方法

 更新時間:2024年11月11日 11:40:16   作者:我是唐青楓  
這篇文章主要為大家詳細介紹了C語言中獲取程序名稱的四種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

方法一

使用 extern char *__progname

介紹:

__progname 是一個定義在C標準庫中的特殊的全局變量,持有當前運行程序的名稱,它僅在類Unix系統(tǒng)中可用,如:Linux、MacOS。

解析:

extern:的含義是聲明此變量是定義在其他地方,通常是在C運行時中。

char *__progname:表示為一個指向字符數(shù)組的指針,值包含正在運行的可執(zhí)行文件的名稱

__progname:的值通常不是文件的全路徑,僅包含文件的名稱,如:/usr/bin/myapp,則 __progname 為 myapp

使用示例:

#include <stdio.h>

extern char *__progname;

int main(void) {
    printf("This program is called: %s\n", __progname);
    return 0;
}

方法二

使用 argv[0] 獲取

介紹:

這是通用獲取程序名稱的方式,在類Unix系統(tǒng)和Windows系統(tǒng)中都可以用。

解析:

如果只聚焦與類Unix平臺,不兼容擴平臺,直接使用 __progname 的方式比較方便,argv[0] 需要顯式的在方法中指定參數(shù)。

使用示例:

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Program name: %s\n", argv[0]);
    return 0;
}

方法三

使用 /proc/self/exe 獲取

介紹:

此方法只能在Linux系統(tǒng)中使用,通過讀取 /proc/self/exe 這個軟鏈接來獲取程序的執(zhí)行路徑。

解析:

/proc/self/exe 是一個指向當前進程的可執(zhí)行文件的軟鏈接。

proc 牽扯到虛擬文件系統(tǒng)(提供進程和系統(tǒng)的信息)

self 實際上是指向當前運行進程的PID,例如當前的PID是:1234,則 /proc/1234/exe 與 /proc/self/exe 相等。

使用示例:

#include <stdio.h>
#include <unistd.h>

int main() {
    char path[1024];
    ssize_t len = readlink("/proc/self/exe", path, sizeof(path) - 1);
    if (len != -1) {
        path[len] = '\0';  // Null-terminate the string
        printf("Executable path: %s\n", path);
    } else {
        perror("readlink");
    }
    return 0;
}

方法四

使用 GetModuleFileName API獲取

介紹:

此方法只能在Windows系統(tǒng)中使用。

解析:

GetModuleFileName 可以獲取到可執(zhí)行文件的完整路徑

使用示例:

#include <windows.h>
#include <stdio.h>

int main() {
    char path[MAX_PATH];
    GetModuleFileName(NULL, path, MAX_PATH);
    printf("Program path: %s\n", path);
    return 0;
}

番外

如何下載獲取到C運行時的源碼

使用包管理器下載,如在Debian/Ubuntu系統(tǒng)中

sudo apt-get source libc6

從官網(wǎng)下載壓縮包

https://www.gnu.org/software/libc/

從Github鏡像倉庫中下載

git clone https://github.com/bminor/glibc.git

到此這篇關于C語言獲取程序名稱的四種方法的文章就介紹到這了,更多相關C語言獲取程序名稱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言實現(xiàn)鏈表與文件存取的示例代碼

    C語言實現(xiàn)鏈表與文件存取的示例代碼

    這篇文章主要和大家分享C語言實現(xiàn)鏈表與文件存取的示例代碼,可以實現(xiàn)建立鏈表,然后把鏈表數(shù)據(jù)存儲到文件中,然后把文件數(shù)據(jù)存儲到數(shù)組中并輸出,感興趣的可以學習一下
    2022-04-04
  • 深入理解C++函數(shù)棧幀

    深入理解C++函數(shù)棧幀

    本文主要介紹了C++函數(shù)棧幀,詳細的介紹了C++函數(shù)棧幀的概念以及使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++?Boost?ProgramOptions超詳細講解

    C++?Boost?ProgramOptions超詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C++核心編程之占位參數(shù)和默認參數(shù)

    C++核心編程之占位參數(shù)和默認參數(shù)

    這篇文章主要介紹了C++核心編程之占位參數(shù)和默認參數(shù),c++中函數(shù)的形參列表中的形參是可以有默認值的,函數(shù)的形參列表里可以有占位參數(shù),用來占位,調(diào)用函數(shù)時必須填補位置。下面更多相關內(nèi)容的詳細介紹,需要的小伙伴可以參考一下
    2022-03-03
  • C/C++隨機數(shù)生成的五種方法

    C/C++隨機數(shù)生成的五種方法

    C++作為一種古老的編程語言,其隨機數(shù)生成的方法已經(jīng)經(jīng)歷了多次的變革,早期的C++版本使用的是rand()函數(shù)和RAND_MAX常量,這種方法雖然簡單,但并不總是提供高質(zhì)量的隨機數(shù),本文給大家介紹了C/C++隨機數(shù)生成的五種方法,需要的朋友可以參考下
    2025-03-03
  • C++中replace()函數(shù)使用方法匯總

    C++中replace()函數(shù)使用方法匯總

    這篇文章主要介紹了C++中replace()函數(shù)使用方法匯總,在這篇文章中為大家詳細介紹C++ replace()函數(shù)的各種應用方式,希望朋友們可以從這里介紹的內(nèi)容充分掌握這一應用技巧
    2015-11-11
  • C++版本簡易Flappy bird

    C++版本簡易Flappy bird

    這篇文章主要介紹了C++版本簡易Flappy bird的相關資料,需要的朋友可以參考下
    2015-03-03
  • vs2019創(chuàng)建dll以及使用的圖文教程

    vs2019創(chuàng)建dll以及使用的圖文教程

    本文主要介紹了vs2019創(chuàng)建dll以及使用的圖文教程,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 基于稀疏圖上的Johnson算法的詳解

    基于稀疏圖上的Johnson算法的詳解

    本篇文章介紹了,稀疏圖上的Johnson算法的詳解。需要的朋友參考下
    2013-05-05
  • Qt圖形圖像開發(fā)之QT滾動區(qū)控件(滾動條)QScrollArea的詳細方法用法圖解與實例

    Qt圖形圖像開發(fā)之QT滾動區(qū)控件(滾動條)QScrollArea的詳細方法用法圖解與實例

    這篇文章主要介紹了Qt圖形圖像開發(fā),QT滾動區(qū)控件(滾動條)QScrollArea的詳細方法用法圖解與實例,需要的朋友可以參考下
    2020-03-03

最新評論