uname специальная версия uname. Поддержка -a, -s, -r, -n, -v, -m опции.
ИСПОЛЬЗОВАНИЕ: uname [опции]
-s Вывести имя ядра
-v Вывести версию ядра
-r Вывести релиз ядра
-n Вывести имя хоста сетевого узла
-m Вывести имя машины аппаратного
-a Выдает все выше
Без вариантов, uname действует как uname -s
Образец:
#include
#include
#include
#include
#include
недействительными print_usage (недействительными);
INT основной (INT ARGC, символ * ARGV [])
{
INT C;
внешний символ * Optarg;
внешний INT Optind, Optopt;
INT a_flag = 0, s_flag = 0, n_flag = 0, r_flag = 0, v_flag = 0,
m_flag = 0;
INT errflag = 0;
хост символ [256];
структура utsname ОТС;
если (gethostname (хост, 255)! = 0 || uname (& ОТС) <0)
{
fprintf (STDERR, "Не удалось получить хоста informationn");
выход (1);
}
/ * Если нет возможности, то просто не напечатать SysName * /
если (ARGC == 1) {
s_flag = 1;
}
другой
{
в то время как ((с = Getopt (ARGC, ARGV, "asnrvm"!)) = -1)
{
Переключатель (с) {
Дело «а»:
a_flag = 1;
ломать;
Дело 'S':
s_flag = 1;
ломать;
Дело 'N':
n_flag = 1;
ломать;
кейс 'R':
r_flag = 1;
ломать;
кейс 'V':
v_flag = 1;
ломать;
кейс 'M':
m_flag = 1;
ломать;
дело '?':
errflag ++;
ломать;
}
}
}
/ * Должен быть один или более ошибочных вариантов прошло -
ИНФ.ПЕЧАТИ использования и выход * /
если (errflag! = 0)
{
print_usage ();
выход (1);
}
символ * SYSNAME * машина * имя узла, * выпуск * версия;
SYSNAME = uts.sysname;
машина = uts.machine;
имя узла = uts.nodename;
освободить = uts.release;
версия = uts.version;
если (a_flag == 1) {
Е ("% s% s% s% s% зп", SYSNAME, имя узла, релиз, версия,
машина );
}
другой
{
символ * printstring;
/ * Выделить достаточно места на все случаи .... * /
printstring = (символ *) таНос (STRLEN (SYSNAME) +
StrLen (версия) +
StrLen (релиз) +
StrLen (имя узла) +
StrLen (машина) +6);
STRCPY (printstring, "");
если (s_flag == 1) {
strcat (printstring, SYSNAME);
strcat (printstring, "");
}
если (n_flag == 1) {
strcat (printstring, имя узла);
strcat (printstring, "");
}
если (r_flag == 1) {
strcat (printstring, выпуск);
strcat (printstring, "");
}
если (v_flag == 1) {
strcat (printstring версия);
strcat (printstring, "");
}
если (m_flag == 1) {
strcat (printstring, машина);
strcat (printstring, "");
}
ставит (printstring);
бесплатно (printstring);
}
вернуть 0;
}
недействительными print_usage (недействительными)
{
символ * использование [] = {"uname - (С) 2004 Кевин Уолдрон",
"Распространяется под условиями GNU General Public Licence",
"ИСПОЛЬЗОВАНИЕ:", "uname [опции]",
"-s Вывести имя ядра",
"-v Вывести версию ядра",
"-r Распечатать выпуск ядра",
"-n Вывести имя хоста сетевого узла",
"-m Вывести имя аппаратной машины",
"-a Выдает все выше»,
"", "Без вариантов, uname действует как uname -s"};
Int я = 0;
для (я = 0; я <12; я ++)
{
Е ("% SN", * (использование + я));
}
}
Детали программы:
Версия: 0.1
Дата загрузки: 2 Jun 15
Тип распространения: Бесплатная
Популярность: 6
Комментарии не найдены