In Resolving the Current Address of a Service section of DNS Service Discovery Programming Guide by Apple:
If you want to run the callback function synchronously instead of setting up a run loop or a select loop, you can call DNSServiceResolve and immediately call DNSServiceProcessResult. The DNSServiceProcessResult function will block until the mDNSResponder daemon has a response, at which time the callback specified when DNSServiceResolve was called will be invoked.
This behaviour does not seem to work with the Bonjour compatibility layer; instead, the DNSServiceProcessResult function returns immediately with a value of 0 (no error) and the callback function is not called.
I am using Ubuntu 8.04 (x86) with libavahi-compat-libdnssd-dev version 0.6.22-2ubuntu4 package.