Це не відповідає на питання безпосередньо, але я не думаю, що тут задають правильне питання. Мені здається, що запитувач хоче, щоб програма, яка діятиме інакше, мабуть, якщо вона має певні дозволи чи ні, однак я б стверджував, що перевірка судо - це не спосіб це зробити. По-перше, багато систем можуть не реалізувати "sudo", це ні в якому разі не потрібно для Linux або багатьох Unixes.
Наприклад, користувач може вже увійти до системи як root, що робить sudo безглуздим, або, можливо, у системі є некористувальні користувачі, які все ще мають можливості виконувати адміністративне завдання, яке, можливо, захоче виконати програма. Нарешті, можливо, система взагалі не має root або sudo, а натомість використовує обов'язкову систему управління доступом з різними можливостями, і не може спіймати всіх суперпользователей, щоб вступити в судо. Або користувач може бути призначений для суду, але в обліковий запис, який не має дозволів, ніж їх власний обліковий запис, з міркувань безпеки (я часто запускаю недовірений код з тимчасовим непривілейованим користувачем, який може писати лише на ramdisks для того, щоб скасувати, а не підвищувати мої дозволи ). Загалом погана ідея припускати таку модель дозволів, як sudo або існування root, або припускати, що користувач sudoed має певні привілеї.
Якщо ви хочете дізнатися, чи є у вас дозволи на виконання операції, найкращий спосіб - це просто спробувати виконати це, тоді перевірте помилку errno на наявність дозволів, якщо вона не працює, або якщо це багатоетапна операція, яка повинна або всі вийти з ладу, або все вдасться Ви можете перевірити, чи буде діяти така функція, як функція доступу POSIX (остерігайтеся можливих умов гонки тут, якщо дозволи активно змінюються)
Якщо на додаток вам потрібно знати реального користувача, що стоїть за судо, ви можете використовувати функцію getlogin, яка повинна працювати для будь-якого інтерактивного сеансу з базовим терміналом і дозволяє вам, наприклад, дізнатися, хто «насправді» виконує команду для аудиту, або знайти домашній каталог реального користувача для збереження журналів.
Нарешті, якщо ви дійсно хочете дізнатися, чи має користувач доступ до кореня (все-таки погана ідея, але менш специфічна для реалізації), ви можете скористатися getuid, щоб перевірити наявність uid 0 та, таким чином, root.