我试图确定是否可以使用来自procfs的元数据来区分同一文件上的两个单独句柄,以及一个指向它的两个文件描述符的句柄。
# setup
exec 3>test.lck
exec 4>&3
# usage
flock -x 3 # this grabs an exclusive lock
flock -s 4 # this converts that lock to a shared lock
echo "This code gets run"
/proc/*/fdinfo
如果我在&#34;设置&#34;之后检查系统的用户状态。阶段已经完成,在使用&#34;之前,我想区分这两种情况,是否有必要的元数据可用?如果没有,那么揭露它的最佳方式是什么? (向#include <iostream>
using namespace std;
string f() {
string orig = "Baz";
string copy1 = string(orig);
string copy2(orig);
string copy3 = orig;
cout << "orig addr: " << &orig << endl;
cout << "copy1 addr: " << ©1 << endl;
cout << "copy2 addr: " << ©2 << endl;
cout << "copy3 addr: " << ©3 << endl;
return orig;
}
int main() {
string ret = f();
cout << "ret addr: " << &ret << endl;
}
添加内核空间指针是否是一个合理的操作,上游可能会接受它作为补丁?)
答案 0 :(得分:1)
我没有意识到在proc中暴露这种情况的任何事情都是如此。在调试一些垃圾时,弄清楚它可能很有用,但是你可以用内核调试器或systemtap脚本检查状态。
从您的问题来看,您似乎希望以一种易于编写脚本的方式实现这一目标,在此我不得不问问题是什么。
我不知道linux那些人是否有兴趣公开这个。一个问题是暴露指向文件的指针会增加另一个infoleak,因此将来很可能插入。其他方法需要对所有文件对象进行编号,并且不会发生这种情况。无论如何,你会被要求以与我上面提到的相似的方式进行辩解。