Инструмент поиска с использованием сценария оболочки - PullRequest
0 голосов
/ 15 декабря 2010

Мое требование состоит в том, чтобы написать инструмент, который принимает в качестве входных данных список системных вызовов, а затем ищет случаи этих системных вызовов в списке файлов. Прямо сейчас мы определили список из 227 системных вызовов. Количество файлов может быть огромным. Алгоритм, который я использовал прямо сейчас, является простым вложенным циклом. И понятно, что программа занимает очень очень много времени, чтобы обработать. Я использую сценарии оболочки для достижения этой цели.

Кто-нибудь может предложить лучший / эффективный алгоритм для этого?

Спасибо, Адитья.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Ваши системные вызовы будут в файле с именем calls, по одному на строку.Ваш список файлов находится в файле с именем list_of_files, по одному на строку.

cat list_of_files | xargs grep -f calls
0 голосов
/ 15 декабря 2010

Какой тип файлов?Исходный код?Исполняемые?Кроме того, системный вызов может быть создан во время выполнения с помощью самоизменяющегося кода, и во многих случаях системный вызов является общей записью ядра, причем номер системного вызова является потенциально динамическим «данными», поэтому степень, в которой анализ статических файлов может быть неполнымдаже полезно?

Если вы можете идентифицировать что-то, что отличает системный вызов в целом от другого содержимого файла, вы можете сначала проверить это, а затем выяснить, какой это, либо путем сравнения методом грубой силыили с помощью какого-либо поиска по дереву.

Другая идея может состоять в том, чтобы посмотреть, сможете ли вы использовать grep для идентификации системных вызовов в целом и вывести вызов с именем файла и номером строки или как вам угодно, затем посмотритеесли бы вы могли просто использовать сортировку по системному вызову.

Возможно, вы захотите использовать такой язык, как perl, который имеет несколько замечательных возможностей, связанных с хэшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...