我的应用程序有多个进程,包括身份验证过程。如果建立连接并且身份验证成功,我需要阻止启动身份验证。我该如何实现这种行为? 平台 - linux。
答案 0 :(得分:0)
您可以直接检查您的流程是否已运行相同的应用程序。 有强大的库,允许您进行高级检查,锁定资源等......取决于您使用的语言。
最简单的解决方案是创建一个锁定文件(例如在/ tmp中),该文件指示程序正在运行,并检查程序开头是否存在此类文件。 这种方法的缺点是你必须确保即使应用程序崩溃也会删除锁定文件。
答案 1 :(得分:0)
您可以利用共享信号量和小型共享内存。让我们调用信号量mutex
和共享内存bool is_authenticated
。 mutex
初始化为值1和is_authenticated
,值为false。
然后您的身份验证过程变为:
wait(mutex);
if (!is_authenticated)
authenticate();
is_authenticated = true;
signal(mutex);
然后您必须处理身份验证到期。所以当会议结束时:
wait(mutex);
assert(is_authenticated == true); /* if not, you have been compromised */
deauthenticate();
is_authenticated = false;
signal(mutex);