Updated answer
I found the ip(8) command in the iproute2 package does exactly what you want! CONFIG_ARPD turned out to be irrelevant to this (it was even removed from the kernel at Linux 3.12.)
Run ip monitor neigh and watch its output.
But I felt the ARP table is changed rather frequently... (cf. Configuring ARP age timeout )
Anyways please disregard my old answer below.
Old answer
I think your Linux kernel must have the CONFIG_ARPD option enabled (try grep CONFIG_ARPD /boot/config-*) to support such operations. And if so, you need to write C program to receive the information.