argv
- это массив строк, каждая из которых содержит аргумент командной строки, включая имя программы, в вашем случае:
argv[0] ./mycprog
argv[1] uname
argv[2] -r
argc
подсчитывает количество аргументов в вашем case, 3.
Вы можете использовать их как sh. Если у вас возникли проблемы, вы можете найти на сайте обширную документацию о том, как их использовать, например, Относительно 'main (int arg c, char * argv [])'
To достичь того, что вам нужно, я бы указал вам:
getpid()
, чтобы получить pid программы.
getuid()
, чтобы получить пользователя id.
getopt()
также хорошая опция для анализа аргументов командной строки.