uname jest specjalna wersja uname. Obsługuje -a, -s, -r, -n, -v, -m opcje.
STOSOWANIE: uname [opcje]
-s Drukuj nazwę jądra
-v Drukuj wersję jądra
-r Drukuj wydanie jądra
-n Drukuj węzła sieciowego hosta
-m Drukuj nazwę sprzętu maszyna
-a Drukuj wszystkie powyższe
Bez opcji, uname działa jak uname -s
Próbka:
#include
#include
#include
#include
#include
void print_usage (void);
int main (int argc, char * argv [])
{
int c;
extern char * Optarg;
extern 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;
hosta char [256];
UTS struct utsname;
if (gethostname (host, 255)! = 0 || uname (i UTS) <0)
{
fprintf (stderr, "Nie można uzyskać hosta informationn");
exit (1);
}
/ * Jeśli nie ma opcji, a następnie po prostu wydrukować SYSNAME * /
if (argc == 1) {
s_flag = 1;
}
więcej
{
while ((c = getopt (argc, argv "asnrvm"))! = -1)
{
przełącznik (c) {
case '':
a_flag = 1;
przerwa;
Sprawa "s":
s_flag = 1;
przerwa;
Sprawa "n":
n_flag = 1;
przerwa;
przypadku określenie "r":
r_flag = 1;
przerwa;
przypadku określenie "v":
v_flag = 1;
przerwa;
przypadku określenie "m":
m_flag = 1;
przerwa;
Sprawa "?":
errflag ++;
przerwa;
}
}
}
/ * Musi być jedna lub więcej błędnych opcje przekazywane -
drukuj Informacje wykorzystanie i wyjść * /
if (errflag! = 0)
{
print_usage ();
exit (1);
}
char * sysname, * maszyny, * nazwa węzła, * zwolnienie, * wersja;
sysname = uts.sysname;
Maszyna = uts.machine;
Nazwa węzła = uts.nodename;
zwolnić = uts.release;
wersja = uts.version;
if (a_flag == 1) {
printf ("% s% s% s% s% sn", sysname, nazwa węzła, zwolnienie, wersja,
maszyny);
}
więcej
{
char * printstring;
/ * Przeznaczyć wystarczająco dużo miejsca na wszystkie ewentualności .... * /
printstring = (char *) malloc (strlen (sysname) +
strlen (wersja) +
strlen (release) +
strlen (nazwa węzła) +
strlen (maszyna) +6);
strcpy (printstring, "");
if (s_flag == 1) {
strcat (printstring, sysname);
strcat (printstring, "");
}
if (n_flag == 1) {
strcat (printstring, nazwa węzła);
strcat (printstring, "");
}
if (r_flag == 1) {
strcat (printstring, release);
strcat (printstring, "");
}
if (v_flag == 1) {
strcat (printstring, wersja);
strcat (printstring, "");
}
if (m_flag == 1) {
strcat (printstring, maszyny);
strcat (printstring, "");
}
puts (printstring);
darmowe (printstring);
}
return 0;
}
void print_usage (void)
{
char * Wykorzystanie [] = {"uname - (C) 2004 Kevin Waldron",
"Ukazuje się zgodnie z warunkami licencji GNU General Public License",
"Użycie:", "uname [opcje]",
"-s Drukuj nazwę jądra",
"-V Wydrukuj wersję jądra",
"-r Drukuj wydanie jądra",
"-n Drukuj węzła nazwę hosta w sieci",
"-m Wypisuje nazwę sprzętu maszynowego",
"-a Drukuj wszystkie powyższe",
"", "Bez opcji, uname działa jak uname -s"};
int i = 0;
for (i = 0; i <12; i ++)
{
printf ("% SN", * (wykorzystanie + i));
}
}
Szczegóły programowe:
Komentarze nie znaleziono