在Linux系统中,我正在尝试编写一个C程序
source.c
,它可以通过符号链接根据调用者的不同而表现不同。它编译成可执行文件source
,并且有多个文件链接到它:
ln -s source link1
ln -s source link2
我想在调用
source
与 link1
时使 link2
输出不同,但我找不到方法来识别 source.c
中调用者的文件名。
我已经阅读了 readlink 解决方案,但它只返回
source
。
按照惯例,
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;
}