Я хотел бы разработать программу командной строки, которая работала бы так:
моя программа /c [some_executable_here]
Который запустил команду, указанную пользователем, и «наблюдал» за процессом (и любыми подпроцессами) для чтения ввода-вывода, а когда эта программа выходит, распечатывал список файлов, которые были «прочитаны» (в конечном итоге это привело к read() системный вызов).
Моя начальная ОС для реализации — Windows, но я хотел бы сделать то же самое и в Linux.
Все API-интерфейсы FileSystem, похожие на часы, которые я видел до сих пор, ориентированы на просмотр каталогов (или отдельных файлов), а не на процессы, поэтому я не уверен, как лучше всего это сделать.
EDIT: я ищу примеры кода того, как в конечном итоге реализовать это (или, по крайней мере, указатели на API, которым я мог бы следовать), чтобы сделать это в Windows и Linux.
Также, чтобы было ясно, он не может использовать такой метод, как OpendFilesView, procmon или строки grepping из какого-либо инструмента системного уровня, который не может окончательно идентифицировать процесс по идентификатору (и любые подпроцессы) с начала и конца его выполнения. ; IOW не может быть никаких проблем со временем и возможности ложного срабатывания при поиске «foo.exe» и получении неправильного результата.