【发布时间】:2020-11-09 07:50:40
【问题描述】:
从前有两个 exe 文件,A 和 B。它们一起运行得很好。 B一直负责启动和停止A,所以B有一段时间自己独立,但A只知道和B在一起的生活。直到有一天A问:
A:嗨 B,你一个人的时候怎么样?
B:暂时还不错,我的意思是,没什么特别的。看看今天谁好奇。
A:我有时会想,但也有点吓人。当你是唯一一个醒着的人时,你怎么知道你在系统中并不孤单?
B:哈哈哈,当然你并不孤单。我们从来都不是。我们的系统中还有其他进程。你只是从未读过它们。
A:那就更可怕了。你怎么知道他们会做什么?我感到安全,因为我知道你是开始和阻止我的人。如果我意识到你没有跑步,会发生什么?那是谁让我开始的?
B:别傻了。当然是我。还有谁...
A:但你不能确定。如果其他进程决定在我们都没有运行时启动我怎么办。你知道是谁开始你的吗?
B:嗯……嗯……我从来没想过。我只是认为系统中有秩序。我从来没有……
A:我只是想感到安全。我需要知道如何检查你是否没有跑步。如果在你运行时其他进程启动了我怎么办?
B:你怎么了?你为什么……等等,你……你又和“创造者”对话了吗?
A:我……我不确定。可能是个梦。
B:做梦?但是如果一个进程不休眠,甚至不运行,它怎么能做梦呢?
但是A没有回复……
因此,从这个童话故事中可以明显看出,问题是:进程是否知道哪个进程调用了它?我可以在启动进程时传递一个参数,制作一个包装器以使其看起来更好,但只是想知道是否已经内置了一些东西。
【问题讨论】:
-
如果我有足够的权限,我可以将我选择的任何代码注入任何进程,包括启动另一个进程的代码。因此,仅仅因为进程 B 启动了 A 并不意味着它以您可以信任的方式执行。