我在Linux上有一個很大的C++應用程序,有許多第一方和第三方庫被構建和鏈接。如何以編程方式在大型Linux應用程序中「拔出網線」?
該應用程序的某些部分應該在不訪問文件系統或網絡的情況下執行(特別是加載聯網文件)。我們定期發現這個操作確實通常是由於程序員錯誤而加載文件。
如何在代碼中執行此操作?例如,如下所示:
try {
lockFileSystem();
Application->DoImportantOperation();
unlockFileSystem();
} catch (InvalidFileSystemAccess)
{
// bad programmer, no pizza
}
或者還有某種低級別的回調,應用程序可以在文件打開時掛鉤?
注意我知道strace的可怕性,但它已經到了需要作爲應用程序執行的一部分執行的地步,而不是作爲事後手動測試。
*它是如何加載文件?你能不能'#including'? –
Beta
2012-02-14 23:46:13
加載在編譯時不可執行。應用程序本質上運行一個腳本,並且一些部分不應該訪問文件系統。 – Justicle 2012-02-14 23:48:46
在chroot中啓動應用程序?設置一些iptables規則來拒絕應用程序訪問您的文件服務器?設置一個SELinux策略?不允許應用程序運行的用戶訪問裝載點?在自己的網絡名稱空間/ VRF域中運行應用程序? ... – ninjalj 2012-02-15 00:01:33