Эмуляция трассировок файловой системы программой на языке си

#c #process #filesystems

#c #процесс #файловые системы

Вопрос:

У меня есть файл с записями типа «PID, время вызова, системный вызов», и вызовы, выполняемые разными процессами, чередуются. Теперь я пишу симулятор для воспроизведения системных вызовов, и мне нужно, чтобы вызов, выполняемый, скажем, PID 1, выполнялся процессом, отличным от вызова, выполняемого, скажем, PID 2. Более того, один и тот же процесс должен выполнять все вызовы, выполняемые с помощью PID 1, и в том же порядке, который указан в файле трассировки. Был бы признателен за некоторую помощь. Спасибо…

Комментарии:

1. Мы здесь, конечно, не для того, чтобы писать код за вас, но если бы я был на вашем месте, я бы начал с написания функции main (), конкретизации ее и перехода оттуда.

2. @Билл, я понимаю, что никто не собирается писать код за меня, и я этого не ожидаю. Логика здесь не так проста, как кажется. Main () считывает файл трассировки файла … проверяет PID трассировки и заставляет поток воспроизвести эту трассировку .. управление возвращается к main () … main () снова считывает файл трассировки, и если это тот же PID, что и раньше, предполагается, что этот вызов выполнял тот же поток, но он больше не существует.

Ответ №1:

Простым способом было бы создать связанный список с одним элементом PID. Для каждого вызова вы могли бы просматривать список (и добавлять узел, если PID не найден) и заставить каждый узел содержать дескриптор файла или что-то в этом роде, откуда вы можете передавать процессу данные. Если ваш PID -это не «случайные» числа, а 1,2,3,4 и т.д… вы всегда можете проделать то же самое с массивом (указателей), чтобы избежать времени, необходимого для обхода списка. Не уверен, что этого достаточно для вас, но опять же, вы не даете много подробностей…

Комментарии:

1. Спасибо. Вернется, как только я попытаюсь