从/ bin /在Linux中启动C app时获取当前路径

时间:2015-04-02 01:01:18

标签: c linux path

所以,我正在开发一个读取文件的应用程序,就像vim或cat那样,在你输入“appname /path/to/file.txt”的地方,它将文件路径作为参数传递给程序,以某种方式操纵文件。

我遇到了障碍。在vim,cat或类似程序中,您可以键入“appname file.txt”,它将读取当前目录中从终端启动应用程序的文件。

例如,我想编辑一个文件我的文件目录。我输入“cd~ / Documents”,然后我可以输入“vim~ / Documents / Essay.txt”,或者我可以输入“vim Essay.txt”。

我的应用程序将存储在/ bin /目录中的二进制文件中,因此我可以使用终端从任何地方启动它,但是当我从终端调用它时,如何传递我所在目录的路径名?

由于我是一名新的Linux开发人员(我一直使用Windows中的.NET语言),我不确定天气是由Linux终端还是由C应用程序本身处理的。

非常感谢任何帮助或建议!

另外,如果从终端运行它比使用/ bin /更有效的方式,请告诉我。

2 个答案:

答案 0 :(得分:1)

如果要获取运行该进程的目录,可以使用系统调用getcwd将字符串复制到缓冲区并返回它。内核会为每个进程跟踪这一情况。

e.g。

char buf[100];
printf("Current directory: %s\n", getcwd(buf, 100));

工作目录可以更改,但默认为进程启动的位置。

答案 1 :(得分:0)

这应该可以正常工作而不必做任何特别的事情。你尝试过一些没有按预期工作的东西吗?

通常,您不会将用户程序放在/ bin中。我会将你的程序存储在/ usr / local / bin。

https://unix.stackexchange.com/a/8658