uname uname özel bir sürümüdür. -a, -s, R, -n, v, -m seçenekleri destekler.
KULLANIM: uname [seçenekler]
-s çekirdek adını yazdır
-v çekirdek sürümü yazdır
-r çekirdek sürümü yazdır
ana bilgisayar adını ağ düğümü Baskı -n
-M makine donanım adını yazdır
-a Yukarıdaki tüm Yazdır
Seçenekler olmadan, uname uname -s gibi davranır
Örnek:
#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 konak [256];
struct utsname ık;
if (gethostname (host, 255)! = 0 || uname (& ık) <0)
{
fprintf (stderr, "ev sahibi informationn alınamıyor");
exit (1);
}
/ * Hiçbir seçenek, daha sonra sadece SysName öğesi yazdırmak * /
if (argc == 1) {
s_flag = 1 'dir;
}
başka
{
while ((c = getopt (argc, argv, "asnrvm"))! = -1)
{
switch (c) {
case 'a':
a_flag = 1 'dir;
break;
's' harfi:
s_flag = 1 'dir;
break;
case 'n':
n_flag = 1;
break;
Kasanın 'r':
r_flag = 1 'dir;
break;
Kasanın 'v':
v_flag = 1;
break;
Kasanın 'm':
m_flag = 1 'dir;
break;
case '?':
errflag ++;
break;
}
}
}
/ * Biri olmalı veya daha fazla hatalı seçenekleri geçti -
Baskı kullanım bilgisi ve çıkış * /
(errflag! = 0) ise
{
print_usage ();
exit (1);
}
char * sysname, * Makine * nodename, * bırakma, * versiyonu;
sysname = uts.sysname;
Makine = uts.machine;
düğümadı = uts.nodename;
= uts.release serbest;
version = uts.version;
Eğer (a_flag == 1) {
printf ("% s% s% s% s% sn", sysname, nodename, sürüm, sürüm,
makine);
}
başka
{
char * printstring;
/ * Tüm olasılıklar için yeterli alan tahsis .... * /
printstring = (char *) malloc (strlen (sysname) +
strlen (sürüm) +
strlen (release) +
strlen (nodename) +
strlen (makine) +6);
strcpy (printstring, "");
Eğer (s_flag == 1) {
strcat (printstring, sysname);
strcat (printstring, "");
}
Eğer (n_flag == 1) {
strcat (printstring, nodename);
strcat (printstring, "");
}
Eğer (r_flag == 1) {
strcat (printstring, sürüm);
strcat (printstring, "");
}
Eğer (v_flag == 1) {
strcat (printstring, sürüm);
strcat (printstring, "");
}
Eğer (m_flag == 1) {
strcat (printstring, makine);
strcat (printstring, "");
}
puts (printstring);
ücretsiz (printstring);
}
return 0;
}
void print_usage (void)
{
char * kullanımı [] = {"uname - (C) 2004 Kevin Waldron",
"GNU Genel Kamu Lisansı koşulları altında dağıtılan",
"KULLANIM:", "uname [seçenekler]",
"Çekirdek adını yazdır -S"
"Çekirdek sürümünü yazdırın -v"
"Çekirdek sürümü yazdır -r",
"Ağ düğümü hostname yazdır -n"
"Makine donanım adını yazdır -M"
Yukarıdaki "basar -a"
"", "Seçenekler olmadan, uname}" uname -s gibi davranır;
int i = 0;
for (i = 0; i <12; i ++)
{
printf ("% sn", * (kullanım + i));
}
}
Yazılım detaylar:
Yorum Bulunamadı