除了使用system()系统调用以外,如何使用C / C ++在Linux中获得文件功能?

时间:2018-09-19 05:42:30

标签: c++ c linux linux-capabilities

我有一项任务要完成,部分任务是获得某些文件功能,并检查是否使用C / C ++正确设置了这些功能。我想确保某些文件具有cap_new_raw + ep功能。除了使用system(get_cap文件)和读取输出(不返回值,不输出)之外,还有什么其他方法可以实现?

1 个答案:

答案 0 :(得分:1)

因此,如果我对手册的理解很好,则应该可以执行以下操作:

capt_t file_cap;
cap_flag_value_t cap_flag_value;

file_cap = cap_get_file("/path/");
if(file_cap != 0) {
    if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_EFFECTIVE, &cap_flag_value) == 0) {
        if(cap_flag_value == CAP_SET)
        // it works
    }
    else // handle error
    if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_PERMITTED, &cap_flag_value) == 0) {
        if(cap_flag_value == CAP_SET)
        // it works
    }
    else // handle error
}
else // handle error