2015-04-02 96 views
1

因此,我正在研究一種讀取文件的應用程序,就像vim或cat的方式一樣,在其中鍵入「appname /path/to/file.txt 「,它將文件路徑作爲參數傳遞給以某種方式操作文件的程序。獲取C應用程序從/ bin /在Linux中啓動時的當前路徑

雖然我遇到了路障。在vim,cat或類似的程序中,你可以輸入「appname file.txt」,它會讀取當前目錄中你從終端啓動應用程序的文件。

例如,我想編輯一個文件我的文檔目錄。我輸入「cd〜/ Documents」,然後我可以輸入「vim〜/ Documents/Essay.txt」,或者我可以輸入「vim Essay.txt」。

我的應用程序將被存儲在/ bin /目錄中的二進制文件中,所以我可以從任何地方使用終端啓動它,但是當我從終端調用它時,如何傳遞目錄中的路徑名?因爲我是一個新的Linux開發人員(我一直在使用Windows中的.NET語言),我不確定天氣是由Linux終端還是由C應用程序本身處理。

任何幫助或建議將不勝感激!另外,如果從終端運行它比在/ bin /中執行它更有效的方法,請告訴我。

+0

您在終端中的目錄是程序啓動時的當前目錄。 – immibis 2015-04-02 01:03:20

+0

@immibis,真的嗎?太棒了!所以當我通過它的文件名沒有路徑,它會讀它? – thesupergeek 2015-04-02 01:04:42

+0

@thesupergeek - 如果您只想傳遞文件名,例如'myapp file.txt',然後你可以將參數傳遞給'fopen'之類的東西,它會將它解釋爲一個常規路徑,所以它會在當前目錄中搜索。 – teppic 2015-04-02 01:34:15

回答

1

如果你想要得到的進程運行從您可以使用系統調用getcwd複製字符串到緩衝區,並返回它的目錄。內核爲每個進程都記錄這一點。

例如

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

工作目錄可以更改,但會默認啓動進程。

0

這應該工作得很好,而無需做任何特別的事情。你有沒有嘗試過一些不像你預期的那樣工作?

通常,您不會將用戶程序放在/ bin中。我會將你的程序存儲在/ usr/local/bin中。

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

+0

如果它在當前目錄中啓動,我認爲我只是不正確地混淆了這些參數。我可以自己解決這個問題。另外,我將它放在/ usr/bin /中,謝謝你澄清。非常感謝你的幫助! – thesupergeek 2015-04-02 01:07:08

相關問題