2009-09-09 32 views
2

說我有一個命令行C程序當前正在執行,並且我想要讀取一個文件或在同一個目錄中執行另一個二進制文件 - 我如何才能找出哪個目錄是?當前正在運行的C程序如何找出它所在的目錄?

請注意,我不是在尋找當前的工作目錄。用戶可能以任何以下方式(可能還有其他我不知道的)調用了我的原始程序。

  • ../../program
  • /家庭/亞光/程序
  • PATH = $ PATH:/家庭/亞光程序

理想情況下我在找東西,將通過MinGW在unix系統和windows上工作。

+3

完成參閱http:// stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe – mark4o 2009-09-09 05:51:49

回答

2
+0

強制要求CWD包含幫助程序可執行文件對於我認識的用戶(包括我)來說肯定是不能接受的。 – AProgrammer 2009-09-09 07:05:10

+0

不知道你在AProgrammer上得到什麼...我沒有提供關於助手可執行文件的任何信息。如果程序需要以cwd作爲程序駐留的地方開始,那麼它完全有效地檢查cwd中存在的argv [0]的基名。正如mark40指出的那樣,從http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe有更好的建議。重點是 - 無法可靠地找到正在執行的程序的位置,因此它應該作爲要求被移除,或者他可以盡力檢測。 – 2009-09-09 08:59:50

+0

編輯鏈接到具有系統特定工作的其他線程 – 2009-09-09 09:05:34

1

的毗連GETCWD()和目錄名(argv的[0])

+0

這將工作在第一和第二個案件,但不是在第三,除非我錯了。 – 2009-09-09 05:51:32

+0

是的,這在第三種情況下不起作用。實際上argv [0]可以通過執行程序來設置任何東西,因此它不會對其進行中繼。一個很好的答案是在@ mark4o提供的鏈接中對您的問題發表評論。 – dimba 2009-09-09 06:01:00

相關問題