所以,我正在开发一个读取文件的应用程序,就像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 /更有效的方式,请告诉我。
答案 0 :(得分:1)
如果要获取运行该进程的目录,可以使用系统调用getcwd
将字符串复制到缓冲区并返回它。内核会为每个进程跟踪这一情况。
e.g。
char buf[100];
printf("Current directory: %s\n", getcwd(buf, 100));
工作目录可以更改,但默认为进程启动的位置。
答案 1 :(得分:0)
这应该可以正常工作而不必做任何特别的事情。你尝试过一些没有按预期工作的东西吗?
通常,您不会将用户程序放在/ bin中。我会将你的程序存储在/ usr / local / bin。