如何在C中列出进程的所有文件描述符,而不调用lsof或解析/ proc /
发布时间:2020-12-16 07:30:14 所属栏目:百科 来源:网络整理
导读:在Jailed Linux环境中,我想在C中获取当前用户空间进程的文件描述符列表. 是否有一个系统调用来获取fdt? 解决方法 我不知道有任何方法来获取文件描述符,但你可以作弊. 打开一个新的文件描述符并关闭它,记住你得到的fd号码. 从0开始到最大的fd你可以打开(你可
在Jailed
Linux环境中,我想在C中获取当前用户空间进程的文件描述符列表.
是否有一个系统调用来获取fdt? 解决方法
我不知道有任何方法来获取文件描述符,但你可以作弊.
打开一个新的文件描述符并关闭它,记住你得到的fd号码. 从0开始到最大的fd你可以打开(你可以用getdtablesize()获取这个数字)dup2每个filedescriptor到保存的fd.那些没有返回错误的是开放的,休息是关闭的. 作为简化示例,只计算它们: int count_fds(void) { int maxfd = getdtablesize(); int openfds; int fd; int i; openfds = 0; if ((fd = socket(AF_UNIX,SOCK_STREAM,0)) == -1) return maxfd; close(fd); for (i = 0; i < maxfd; i++) { if (dup2(i,fd) != -1) { openfds++; close(fd); } } return openfds; } 我不知道任何文件描述符可能有副作用,如果你复制它们,但总有奇怪的野兽,所以使用风险自负. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |