如何在进程内检测是否以HTCondor作业运行?(Python/C++)
检测进程是否以HTCondor作业形式运行的实现方法
HTCondor在启动作业时会自动向进程注入一系列专属环境变量,我们可以通过检查这些环境变量是否存在来判断当前进程是否作为HTCondor作业运行。以下是Python和C++的具体实现:
Python 实现
直接通过os.environ检查HTCondor特有的环境变量,只要存在其中任意一个即可判定:
import os def current_process_is_running_as_an_HTCondor_job(): # 覆盖不同HTCondor版本的常见专属环境变量 condor_specific_vars = [ "_CONDOR_JOB_ID", "CONDOR_ID", "_CONDOR_SLOT", "CONDOR_SLOT_NAME" ] return any(var in os.environ for var in condor_specific_vars) # 示例调用 if current_process_is_running_as_an_HTCondor_job(): do_action_1() else: do_action_2()
C++ 实现
使用std::getenv函数检查环境变量,若目标变量存在则返回非空指针:
#include <cstdlib> #include <vector> #include <string> bool current_process_is_running_as_an_HTCondor_job() { const std::vector<std::string> condor_specific_vars = { "_CONDOR_JOB_ID", "CONDOR_ID", "_CONDOR_SLOT", "CONDOR_SLOT_NAME" }; for (const auto& var : condor_specific_vars) { if (std::getenv(var.c_str()) != nullptr) { return true; } } return false; } // 示例调用 int main() { if (current_process_is_running_as_an_HTCondor_job()) { // 执行do_action_1逻辑 } else { // 执行do_action_2逻辑 } return 0; }
补充说明
- 选择多个环境变量是为了兼容不同版本的HTCondor,部分旧版本可能只设置其中某几个变量;
- 这些环境变量由HTCondor作业调度器自动注入,无需手动配置,可靠性较高。
内容的提问来源于stack exchange,提问作者S.V
相关产品推荐
相关产品推荐

