Isso não responde diretamente à pergunta, mas acho que a pergunta correta não está sendo feita aqui. Parece-me que o solicitante quer um programa que atue de forma diferente se tiver certas permissões ou não, no entanto, eu diria que verificar se o sudo não é a maneira de fazer isso. Em primeiro lugar, muitos sistemas podem não implementar um "sudo", não é de forma alguma necessário no Linux ou em muitos Unixes.
Por exemplo, um usuário já pode estar logado como root, tornando o sudo sem sentido ou talvez o sistema tenha usuários não root que ainda tenham recursos para executar a tarefa administrativa que o programa deseja executar. Finalmente, talvez o sistema não possua root ou sudo e, em vez disso, use um sistema de controle de acesso obrigatório com recursos diferentes e sem capturar todos os superusuários nos quais o sudo se encontra. Ou o usuário pode ser sudoed, mas em uma conta que tenha permissões sem a sua própria conta por motivos de segurança (eu geralmente corro código não confiável com um usuário temporário sem privilégios, que só pode gravar em ramdisks para descartar, não aumentar minhas permissões ) No geral, é uma má idéia assumir um modelo de permissões específico, como sudo ou a existência de raiz, ou assumir que um usuário sudoed possui privilégios específicos.
Se você deseja descobrir se possui permissões para executar uma operação, a melhor maneira é tentar e fazê-lo. Verifique errno quanto a problemas de permissão, se falhar ou se for uma operação em vários estágios, que deve falhar ou ter êxito. você pode verificar se uma operação funcionará com funções como a função de acesso POSIX (cuidado com as possíveis condições de corrida aqui se as permissões estiverem sendo alteradas ativamente)
Se você precisar conhecer o usuário real por trás do sudo, além disso, poderá usar a função getlogin , que deve funcionar em qualquer sessão interativa com um terminal subjacente e permitir, por exemplo, descobrir quem está 'realmente' executando o comando para auditoria ou encontrar o diretório inicial do usuário real para salvar logs.
Finalmente, se o que você realmente deseja é descobrir se um usuário tem acesso root (ainda é uma má idéia, mas menos específica de implementação), você pode usar o getuid para verificar se há um uid 0 e, portanto, root.