grep работает над чистым текстом и ничего не знает о базовом синтаксисе Вашей программы C. Поэтому в порядке не поиск в комментирует, что у Вас есть несколько опций:
C-комментарии полосы перед поиском, можно сделать это использование gcc -fpreprocessed -dD -E yourfile.c
Для получения дополнительной информации см. https://stackoverflow.com/questions/2394017/remove-comments-from-c-c-code
Пишите/используйте некоторый hacky, который полурабочие сценарии как Вы уже нашли (например, они работают путем пропуска строк, запускающихся с //
или /*
) для обработки деталей всех возможных комментариев C/C++ (снова, см. предыдущую ссылку для некоторых страшных тестовых сценариев). Затем у Вас все еще могут быть ложные положительные стороны, но Вы ничего не должны предварительно обрабатывать.
Использование более усовершенствованные инструменты для того, чтобы сделать "семантический поиск" в коде. Я нашел "coccigrep": http://home.regit.org/software/coccigrep/, который Этот вид инструментов позволяет поиску некоторых определенных операторов языка (т.е. обновление структуры с именем) и конечно они отбрасывают комментарии.
jlliagre ответил на вопрос. И отправленный ссылка на хороший ответ. Поверьте ему, не мне.
Когда Вы пишете в/tmp в Солярисе только - Вы пишете в RAM не к диску. Поэтому записи в/tmp файлы идут супер быстро. После того как RAM заполняется, система придет к проверке. Если Вы полностью заполните/tmp, то writews к/tmp попытается записать для свопинга, и в конечном счете система падает. Этот подход обходит ulimit для памяти. Убедитесь, что Вам не указали макс. размер файла:
ulimit -a
file(blocks) unlimited