首页 > 解决方案 > 如何在C中的系统函数中给出脚本的相对路径?

问题描述

我的 .c 代码在“src”目录中,而 space.sh 在“bin”目录中。在给定的代码中,我给出了 space.sh 的完整路径。当我运行代码时,它工作正常,但是当我在系统函数中使用相对路径时,它会出现路径未找到(系统(函数注释部分))之类的错误。这里出了什么问题?我只想要相对于我的 .c 代码(或相对于“练习”目录)的相对路径

#include <unistd.h>
#include <stdio.h>
int main(void)
{
//system("../bin/space.sh");
system("/home/amitk/projects/amit_bk/practice/bin/space.sh");

return 0;
}

标签: clinux

解决方案


相对于 .c 代码的路径没有意义,因为 .exe 可以在任何地方结束,例如,如果您在没有代码的情况下分发应用程序。

如果您使用相对路径,它们将在 .exe 运行时相对于当前路径。如果在资源管理器中双击它,它将与 .exe 路径相同,但例如可以使用 .exe 作为“目标”创建快捷方式,但“开始于”位置不同,因此您永远不应该假设当前路径是 .exe 文件所在的位置。

argv[0]如果您将 main 函数定义为 .exe 文件,则可以使用它来确定 .exe 文件的位置int main(int argc, char *argv[])。因此,如果需要,您可以从中删除 .exe 文件名argv[0]以确定 .exe 的路径。


推荐阅读