next up previous
Next: 如何用 popen() 對一個 process 做讀寫的動作? Up: 自以為已經知道所有答案的人可能會問的高級問題 Previous: 要怎樣才能得知一個已 open 檔案之檔名?

一個執行中的程式如何知道自己的 pathname?

若果 argv[0] 是以 "/" 開始的字,它可能就是你的程式所在地的絕對路徑。 如果不是那就得照順序檢查 PATH 裡的每一個目錄看看裡面是否有與 argv[0] 一樣的程式。如果找得到的話將那個目錄與程式名稱兜起來可能就是你要的  pathname 了。

不過,用上述方法找到的名字並不一定是對的,因為在程式中用到  exec() 時,  argv[0] 是可以隨便給的。將 argv[0] 設為與要執行的程式名稱相同只 是一種慣用法罷了!

以下的例子可能會使你更清楚些:

 
	        #include <stdio.h>
        	main()
	        {
        	    execl("/usr/games/rogue", "vi Thesis", (char *)NULL);
	        }
這個被執行的程式就會認為它的名字(argv[0] 之值)是 "vi Thesis")。



Tan Koan-Sin
1999-03-02