我在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