uname er en særlig udgave af uname. Støtter -a, -s, -r, -n, -v, -m muligheder.
ANVENDELSE: uname [options]
-s Udskriv kernen navn
-v Udskriv kernel version
-r Udskriv kernen frigivelse
-n Udskriv netværksknudepunktet værtsnavn
-m Udskriv maskinens hardware navn
-a Udskriv alle ovenstående
Uden optioner, uname fungerer som uname -s
Prøve:
#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;
char vært [256];
struct utsname UTS;
if (gethostname (vært, 255)! = 0 || uname (& UTS) <0)
{
fprintf (stderr, "Kan ikke få host informationn");
exit (1);
}
/ * Hvis ingen indstillinger, så bare udskrive sysName * /
if (argc == 1) {
s_flag = 1;
}
andet
{
mens ((c = getopt (argc, argv "asnrvm"))! = -1)
{
kontakt (c) {
tilfælde "a":
a_flag = 1;
break;
tilfælde 's':
s_flag = 1;
break;
tilfælde 'n':
n_flag = 1;
break;
tilfældet »r«:
r_flag = 1;
break;
case 'v':
v_flag = 1;
break;
tilfældet »m«:
m_flag = 1;
break;
tilfælde "?":
errflag ++;
break;
}
}
}
/ * Skal have været en eller flere fejlagtige indstillinger bestået -
print forbrug info og udgang * /
if (errflag! = 0)
{
print_usage ();
exit (1);
}
char * sysName, * maskine, * nodename, * udgivelse, * udgave;
sysName = uts.sysname;
maskine = uts.machine;
nodename = uts.nodename;
frigivelse = uts.release;
udgave = uts.version;
if (a_flag == 1) {
printf ("% s% s% s% s% sn", sysName, nodename, release, version,
maskine);
}
andet
{
char * printstring;
/ * Afsætte tilstrækkelig plads til alle eventualiteter .... * /
printstring = (char *) malloc (strlen (sysName) +
strlen (version) +
strlen (release) +
strlen (nodename) +
strlen (maskine) +6);
strcpy (printstring, "");
if (s_flag == 1) {
strcat (printstring, sysName);
strcat (printstring, "");
}
if (n_flag == 1) {
strcat (printstring, nodename);
strcat (printstring, "");
}
if (r_flag == 1) {
strcat (printstring, release);
strcat (printstring, "");
}
if (v_flag == 1) {
strcat (printstring, udgave);
strcat (printstring, "");
}
if (m_flag == 1) {
strcat (printstring, maskine);
strcat (printstring, "");
}
puts (printstring);
fri (printstring);
}
returnere 0;
}
void print_usage (void)
{
char * brug [] = {"uname - (C) 2004 Kevin Waldron",
"Distribueret under betingelserne i GNU General Public Licence",
"BRUG:", "uname [indstillinger]",
"-s Udskriv kernen navnet",
"-v Udskriv kernen version",
"-R Udskriv kernen frigivelse",
"-n Udskriv netværksknudepunktet hostname",
"-m Udskriv hardware navn maskine",
"-a Udskriv alle de ovennævnte",
"", "Uden optioner, uname fungerer som uname -s"};
int i = 0;
for (i = 0; i <12; i ++)
{
printf ("% sn" * (forbrug + i));
}
}
Software detaljer:
Kommentarer ikke fundet