Süsteemikõned

Stat süsteemi kõne Linuxi õpetus

Stat süsteemi kõne Linuxi õpetus

Linuxi süsteemikõned

Linuxi tuuma pakutavad süsteemikõned paljastatakse glibc kaudu C-programmeerimiskeeles.  Süsteemikõne kasutamisel suhtlete operatsioonisüsteemiga ja tagasipöördumisel operatsioonisüsteem teavitab teid süsteemikõne funktsioonidesse tagastatavate parameetrite kaudu (tagastusväärtused).

Stat süsteemi kõne:

Stat süsteemikõne on Linuxi süsteemikõne faili oleku kontrollimiseks, näiteks faili juurde pääsemise kontrollimiseks. Süsteemikõne stat () tagastab tegelikult failiatribuudid. Inoodi faili atribuudid tagastab põhimõtteliselt funktsioon Stat (). Inood sisaldab faili metaandmeid. Inood sisaldab: faili tüüpi, faili suurust, kui faili juurde pääseti (muudetud, kustutatud), st ajatemplit, ja faili teed, kasutajatunnust ja rühma ID, faili linke ja faili sisu füüsiline aadress.

Võib öelda, et inode sisaldab kõiki andmeid, mis on vajalikud süsteemikõnes stat (), ja see on faili indeksinumber, mis on salvestatud inode tabelisse. Alati, kui loote faili, luuakse selle faili jaoks inode number. Stat süsteemikõne abil saab vaadata süsteemitabeleid.

Süsteemi C Stat süntaks:

Stat-süsteemi kõne kasutamiseks C-programmeerimiskeeles peate lisama järgmise päisefaili:

# kaasata

Stat kasutatakse faili oleku saamiseks. C stat-süsteemi kõne süntaks ei pruugi olla sama kõigi operatsioonisüsteemide puhul. Linuxis on süsteemi süsteemikõne süntaks järgmine:

int stat (const char * tee, struct stat * buf)

Funktsiooni tagastustüüp int, funktsiooni edukalt käivitamisel tagastatakse vigade korral 0, tagastatakse -1.

Siin const char * tee määrab faili nime. Kui faili tee on sümboolne link, peate faili nime asemel määrama lingi.

Siis funktsioonis on meil a stat struktuur kuhu salvestatakse faili andmed või teave, mis kasutab kursorit nimega buf, mis antakse sisse parameetrina ja täidetakse kõne sooritamise ajal ning mida kasutaja saab pärast kõnet lugeda.

Stat struktuur:

Statistiline struktuur, mis on määratletud punktis päisefail sisaldab järgmisi välju:

struct stat

mode_t st_mode;
ino_t st_ino;
dev_t st_dev;
dev_t st_rdev;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
off_t st_size;
struct timspec st_atim;
struct timspec st_mtim;
struct timspec st_ctim;
blksize_t st_blksize;
blkcnt_t st_blocks;
;

Kirjeldus:

  1. st_dev: See on selle seadme ID, kus meie fail praegu elab.
  2. st_rdev: See väli kirjeldab, et konkreetne fail tähistab konkreetset seadet.
  3. st_ino: See on faili inode number või seerianumber. Kuna see on indeksinumber, peaks see olema kõigi failide jaoks ainulaadne
  4. st_size: st_size on faili suurus baitides.
  5. st_atime: See on viimane või viimane aeg, mil faili juurde pääseti.
  6. st_ctime: See on viimane aeg, mil faili olekut või õigusi muudeti.
  7. st_mtime: Praegu on faili muutmise viimane aeg.
  8. st_blksize: See väli annab eelistatud I / O-failisüsteemi ploki suuruse, mis võib failiti erineda.
  9. st_blocks: See väli näitab plokkide koguarvu 512 baiti kordades.
  10. st_nlink: See väli näitab kõvaketaste koguarvu.
  11. st_uid: See väli näitab kasutajatunnust.
  12. st_gid: See väli näitab rühma ID-d.
  13. st_mode: See näitab faili õigusi, ütleb faili režiimid. Järgmised on lipud, mis tuleks väljale st_mode määratleda:
Lipud Kirjeldus Lipu väärtus
S_IFMT Bitmask, mida kasutatakse faili režiimi väärtuse saamiseks 0170000
S_IFSOCK Pistikupesa failikonstant 0140000
S_IFLINK Sümboolse lingi failikonstant 0120000
S_IFREG Faili konstant tavalise faili jaoks 0100000
S_IFBLK Blokeerimisfaili failikonstant 0060000
S_IFDIR Kataloogifaili failikonstant 0040000
S_IFCHR Märgifaili faili konstant 0020000
S_IFIFO Failikonstant on fifo 0010000
S_ISUID Määra User ID bit 0004000
S_ISGID Määra grupi ID bit 0002000
S_ISVTX Kleepuv bitti, mis tähistab jagatud teksti 0001000
S_IRWXU Omaniku õigused (lugemine, kirjutamine, täitmine) 00700
S_IRUSR Lugege omaniku õigusi 00400
S_IWUSR Omanikule kirjutamisõigused 00200
S_IXUSR Käivitage omaniku õigused 00100
S_IRWXG Grupiõigused (lugemine, kirjutamine, täitmine) 00070
S_IRGRP Lugemisõigused rühmale 00040
S_IWGRP Rühma kirjutamisõigused 00020
S_IXGRP Käivitage rühma õigused 00010
S_IRWXO Teiste õigused (lugemine, kirjutamine, täitmine) 00007
S_IROTH Lugege teiste lubasid 00004
S_IWOTH Kirjutamisõigused teistele 00002
S_IXOTH Teiste jaoks lubade täitmine 00001

Stat-süsteemi kõne kasutamine:

Järgmine näide näitab, kuidas stat-süsteemi kõnet C-programmeerimiskeeles kasutada Linuxis, Ubuntu.

NÄIDE 1:

Järgmises koodis leiame faili režiimi:

KOOD:

# kaasata
# kaasata
int main ()

// kursor stat struktuurile
struct stat sfile;
// stat süsteemi kõne
stat ("stat.c ", & sfail);
// juurdepääs st_mode (statistilise struktuuri andmeliige)
printf ("st_mode =% o", sfile.st_mode);
tagastama 0;

Programmi kompileerimine ja käitamine tagastatakse järgmiselt:

Selles koodis oleme edastanud faili nime stat-süsteemi kõnes ja seejärel kursori stat structile, mis on sfile. Seejärel kasutatakse stat struktuuriga kursorit juurdepääsuks st_mode, mis kuvab faili režiimi printf-lauset kasutades.

Päisefail kasutatakse selleks, et saaksite kasutada stat-süsteemi kõnet. Päisefail on standardne sisendi / väljundi teegifail, et saaksite oma C-koodis kasutada printf või scanf.

NÄIDE 2:

Järgmises koodis saame teavet faili kohta, kasutades süsteemi süsteemi kõnet:

KOOD:

# kaasata
# kaasata
# kaasata
# kaasata
void sfile (char const failinimi []);
int main ()
ssize_t lugeda;
char * puhver = 0;
suurus_t buf_suze = 0;
printf ("Sisestage kontrollitava faili nimi: \ n");
read = getline (& puhver, & buf_size, stdin);
kui (loe <=0 )
printf ("getline nurjus \ n");
väljapääs (1);

kui (puhver [loe-1] == '\ n')
puhver [loe-1] = 0;

int s = avatud (puhver, O_RDONLY);
kui (s == - 1)
printf ("Faili pole olemas \ n");
väljapääs (1);

veel
sfile (puhver);

vaba (puhver);
tagastama 0;

void sfile (char const failinimi [])
struct stat sfile;
if (stat (failinimi, & sfail) == - 1)
printf ("Ilmnes viga \ n");

// Juurdepääs statistilise struktuuri andmeliikmetele
printf ("\ nFail st_uid% d \ n", sfile.st_uid);
printf ("\ nFail st_blksize% ld \ n", sfile.st_blksize);
printf ("\ nFail st_gid% d \ n", sfile.st_gid);
printf ("\ nFail st_blocks% ld \ n", sfile.st_blokid);
printf ("\ nFail st_size% ld \ n", sfile.st_suze);
printf ("\ nFail st_nlink% u \ n", (märkimata int) sfail.st_nlink);
printf ("\ nFailiõiguste kasutaja \ n");
printf ((sfile.st_mode & S_IRUSR)? "r": "-");
printf ((sfile.st_mode & S_IWUSR)? "w": "-");
printf ((sfile.st_mode & S_IXUSR)? "x": "-");
printf ("\ n");
printf ("\ nFaili õiguste rühm \ n");
printf ((sfile.st_mode & S_IRGRP)? "r": "-");
printf ((sfile.st_mode & S_IWGRP)? "w": "-");
printf ((sfile.st_mode & S_IXGRP)? "x": "-");
printf ("\ n");
printf ("\ nFailiõigused Muu \ n");
printf ((sfile.st_mode & S_IROTH)? "r": "-");
printf ((sfile.st_mode & S_IWOTH)? "w": "-");
printf ((sfile.st_mode & S_IXOTH)? "x": "-");
printf ("\ n");

VÄLJUND:

Ülaltoodud C-koodi sisestasime faili nime ja kui faili pole, peatatakse programmi käivitamine. Seda näitab järgmine pilt:

Kui meie fail on olemas, kutsutakse funktsioon sfile (n), milles oleme edastanud faili nime. Funktsiooni sees oleme kõigepealt kasutanud Stat-süsteemi kutset, kui stat () tagastab -1, siis peab olema viga, nii et prinditakse teade ja programmi täitmine peatatakse.

Siis oleme printf-lauses kasutanud funktsiooni ja punktide eraldaja nime, et pääseda juurde andmeliikmetele stat struct.

Seejärel oleme failirežiimi jaoks kasutanud st_mode makrosid või lippe. Siin kasutatakse vastavate režiimide printimiseks loogikat ja operaatorit. Oleme kontrollinud kasutaja, rühma ja teiste kasutajate õigusi määratud faili jaoks (kasutaja sisestatud failinimi).

Sellega näete, kuidas kasutada C-programmeerimiskeelt kasutavat statistikakõne operatsioonisüsteemi kernelilt failide kohta teabe saamiseks.  Kui teil on küsimusi, rääkige sellest meile kommentaaride jaotises.

X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...
Microsoft Sculpt Touch juhtmeta hiirte ülevaade
Lugesin hiljuti Microsoft Sculpt Touch juhtmevaba hiir ja otsustas selle osta. Pärast mõnda aega kasutamist otsustasin jagada sellega oma kogemusi. Se...
Rakenduse AppyMouse ekraanipaneel ja hiirekursor Windowsi tahvelarvutitele
Tahvelarvutite kasutajad tunnevad hiirekursorit sageli puudust, eriti kui neil on kombeks sülearvuteid kasutada. Puutetundliku ekraaniga nutitelefonid...