通过符号链接获取正在调用当前可执行文件的文件

问题描述 投票:0回答:1

在Linux系统中,我正在尝试编写一个C程序

source.c
,它可以通过符号链接根据调用者的不同而表现不同。它编译成可执行文件
source
,并且有多个文件链接到它:

ln -s source link1

ln -s source link2

我想在调用

source
link1
时使
link2
输出不同,但我找不到方法来识别
source.c
中调用者的文件名。

我已经阅读了 readlink 解决方案,但它只返回

source

c linux symlink
1个回答
0
投票

按照惯例,

argv[0]
将包含用于调用程序的名称。您可以使用它来查看它是用哪个符号链接调用的。

int main(int argc, char *argv[])
{
   if (!strcmp(argv[0], "link1") {
       // do actions for link1
   } else if (!strcmp(argv[0], "link2") {
       // do actions for link2
   } else {
       printf("invoked as unknown name: %s\n", argv[0]);
   }
   return 0;
}
    
© www.soinside.com 2019 - 2024. All rights reserved.