2009-02-11 42 views
0

如果我有一個C語言中只包含一個文件的字符串格式化程序,是否有可能找到該文件駐留在內存中並讓正在運行的程序處理它自己的源文件?查找內存中的程序代碼C

當一個C程序運行時,是否可以定義一個指向實際代碼的指針並進行處理?

我不想打開並讀取源文件,但從內存中執行。

+0

所以基本上,你想包括你的程序的源代碼在編譯的可執行二進制文件,然後以某種方式引用它,對吧? – 2009-02-11 12:01:23

回答

1

我不知道如果我理解正確的問題,但我給它一個嘗試:

您可以訪問到你的C軟件與__FILE__指令的源文件的路徑名。將它用於除顯示之外的目的意味着它自上次編譯以來沒有移動或消失。

1

通常C在運行前編譯。這意味着源代碼被轉換爲可執行的機器指令。所以當你運行程序時,源代碼可能在內存中不可用。

1

你的意思是你的程序分析機器碼嗎?還是C源?

你的C程序,一旦它的編譯,是不是在C了,所以正在運行的程序會在機器代碼,而不是C.

爲什麼你不希望打開從磁盤源文件?

0

當C程序運行時,是否可以定義一個指向實際代碼的指針並處理它?

我想你可以通過使用函數指針來獲取函數的地址,並通過將其轉換爲整型指針來讀/寫。然而,由於多種原因,這將非常不尋常,困難和危險。爲了編寫代碼,機器代碼可以位於內存的只讀部分。而且,您必須將機器代碼寫入內存。