I want to find the default handling application in my C program. Is there a C API with same functionality as
xdg-mime query default mime-type on Linux?
glibc doesn't know anything about MIME types; the API functions live at the level of desktop environment APIs, and the
freedesktop.org recognize that harmonizing them is an impossible task so they only specify the shell-level interface. You either use that via
popen() or code for a particular desktop environment.
I don't believe there's a C API for querying mime-types in the same way that xdg-mime works. xdg-mime is just a shell script that queries your desktop environment (Gnome, KDE, or other), and runs the appropriate command to get the MIME type from that DE's internal configuration.
You could replicate the behaviour of the shell script, or just call the shell script directly from C. The XDG Utils web page doesn't seem to show anything about a C API.