#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. Спасибо. Вернется, как только я попытаюсь