2011-01-31 102 views
2

我有一個文件,我想跟蹤正在訪問文件的進程的所有pid。 C/C++中是否有可用的功能來執行此操作。只有當進程的PID位於預定義的pid列表中時,我纔想授予對文件的訪問權限。跟蹤文件訪問

+1

什麼操作系統?什麼操作系統分配靜態進程ID可以引用(或者你是否使用某種進程冷凍機)? – 2011-01-31 08:12:40

回答

0

你在問什麼是操作系統特定的任務,我很確定沒有標準庫存在。如果你幸運的話,可能會有第三方庫爲你做到這一點,但我不會屏住呼吸:)

如果你指定你想要做的操作系統和環境,機會會更好有人可能會爲該平臺提供詳細的答覆。

+0

抱歉沒有指定平臺。我的意思是在Ubuntu的Linux .. – nikhil 2011-01-31 11:19:14

2

在Linux上,您可以通過/proc/<pid>/fd/內的鏈接調用readlink()來查找進程打開的文件。要查找打開給定文件的所有進程,可以遍歷/proc中的每個PID,查找相關文件。請注意,除非您是root用戶,否則您通常無法查看由其他用戶擁有的進程打開的文件。

無法限制對特定PID的訪問 - PID在啓動時分配給進程,並在進程退出後重新用於其他進程。文件權限基於進程的UID,GID和補充GID,而不是PID。

也許如果你描述你正在嘗試做的更完整的(在一個新問題中),我們將能夠爲你提供幫助。