How can I parse argument using C?
O POSIX fornece getopt para analisar os argumentos da linha de comando.
Em sistemas Linux, a biblioteca GNU C fornece uma função getopt_long estendida que permite para parâmetros nomeados longos, além dos flags de caractere único suportados pelo getopt simples.
In linux, pressing 'tab' auto fills the command. I would like to have similar functionalities in my utility. How would I program that using C?
Se você deseja que seu programa mostre um prompt próprio e forneça edição de linha e preenchimento automático sensível ao contexto, procure em readline .
While developing utilities(of any kind), Is it better to use the functions provided by the linux kernel or continue with those in libc?
Libc é o que fornece ligações syscall de qualquer maneira (a menos que você vá a extremos ridículos para evitar isso, o que geralmente envolve escrever seu próprio código assembler e não lhe compra nada além de dores de cabeça).
Em geral, use os serviços de nível mais alto que permitirão que você faça o que precisar, a menos que você tenha razões de desempenho claras, específicas e mensuradas informando o contrário.