2013-08-29 152 views
0

我想了解可執行文件的rlimit和管道限制是什麼? 我正在調試動態構建的可執行文件在加載時崩潰的問題,但靜態構建的可執行文件沒有問題。 當一個動態生成的可執行文件被加載,執行(Linux)。它如何在內部運作? Linux可執行文件屬性(rlimit)

我看到下面的打印寄存器轉儲

Process 2748(ls) has RLIMIT_CORE set to 1 
Aborting Core 

首先有人請解釋什麼是RLIMIT與角度EXEC後。還有一些東西叫做管道限制嗎?我看到這個proc條目。

請指點我解釋可執行文件的這些屬性的資源。

問題2: 當一個可執行文件被加載時,exec究竟做了什麼?鏈接器將加載我的可執行文件所需的共享庫。所以要發生這種情況,應該先執行鏈接器(二進制內/ system/bin)。

因此,我明白鏈接器(system/bin/linker)和可執行文件(ls)都是由exec加載的。我的理解是否正確?這都是理論。如果某個人,可能是擅長fs和proc管理的人,可以將我指向相關的來源,那將是很大的幫助。謝謝。

回答

1

RLIMIT_CORE用於限制coredump在被中止前允許產生的信息量。一旦達到此限制,則不會記錄更多信息,並且將消息Aborting Core記錄到控制檯。

core手冊頁:

進程可以設置它的軟RLIMIT_CORE資源限制放置一個上限,如果它收到將要產生的核心轉儲文件大小一個「核心轉儲」信號。

使用setrlimit()RLIMIT_CORE配置爲更大的值以獲得完整的內核。


可執行/共享對象的最常見的格式是ELF。在Linux中,這些共享對象的動態加載和聯通過ld.so

ld.so在新創建的進程的地址空間中(在這種情況下,通過exec)被加載並首先執行進行。這是可能的,因爲它的路徑在編譯期間嵌入到可執行二進制文件的.interp部分。

動態鏈接器然後

  • 加載初始可執行映像
  • 負載從屬共享對象(*.so文件)
  • 跳轉到可執行文件的入口點

參考:Dynamic linker on ELF-based Unix-like systems

+1

謝謝你的完美答案 –

相關問題