2016-03-10 8 views
1

Как очистить кеш-файл arp в Linux by program, а не с помощью команды arp? Существуют ли библиотечные функции для реализации этого?Как очистить кеш-файл arp в linux программой, а не командой

================================================================================================================================================ ============================= EDIT

в linux, я хочу, чтобы очистить arp cache и периодически отправлять пинг-пакеты для поиска хостов в локальной сети (путем сбора ответа arp и ответа ICMP). Поскольку некоторые хосты не отвечают на ping, я пытаюсь получить ответ arp и ответ ICMP в моей программе. Но если в кепке arp есть информация IP, он не отправляет ARP-запрос для этого IP-адреса, и топология может быть неполной. Поэтому я хочу периодически очищать кеш arp. Как я могу периодически очищать кеш arp в своей программе? Спасибо за ваше время.

+0

На каком языке вы программируете? Для C вы можете использовать вызов 'execv'. См. Этот ответ для примера кода: http://stackoverflow.com/a/5460448/579698, для Java см. Http://stackoverflow.com/a/13991171/579698 –

+0

Спасибо! Да, для C. Программа должна периодически очищать кеш-сервер и делать другие вещи. Я не думаю, что 'execv' может это сделать. Если вы выполняете другой файл, как я могу управлять процессом, чтобы делать другие вещи? – hel

+0

Если вам нужно сделать это регулярно, вы можете поместить свой bin в cron. * Folder (есть другие решения) – Pierre

ответ

0

ARP кэш может содержаться в одном из следующих файлов (нет официальной recommandation):

/proc/net/arp 
/etc/networks 
/etc/hosts 
/etc/ethers 

Вы можете получить доступ к этому файлу программа и делать все, что вы хотите с.

+0

Спасибо, я редактирую вопрос, чтобы сделать его более понятным. Существуют ли функции, доступные для очистки кэша arp? – hel

+0

Нет, вы должны получить доступ к этим файлам с помощью функций langage I/O, которые вы используете ('fopen()', 'fread()' в C и т. Д.) – Pierre