Ce face os.mkfifo(), mknod(), major(), minor() și makedev()
mkfifo() creează un canal cu nume: un fișier special prin care un proces scrie și altul citește, ca printr-o țeavă. mknod() creează fișiere speciale (FIFO, dispozitive bloc sau caracter); dispozitivele cer drepturi de administrator.
Un număr de dispozitiv combină numărul „major” (tipul driverului) și „minor” (instanța). major() și minor() îl descompun, iar makedev() îl compune.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Fișierul special creat. |
mode |
Tipul și permisiunile (de exemplu stat.S_IFIFO | 0o600). |
device |
Pentru dispozitive: numărul creat cu makedev. |
Ce returnează
mkfifo/mknod: None. major/minor/makedev: întregi.
Exemple
Exemplul 1: Comunicare printr-un FIFO
import os, stat
os.mkfifo("canal")
os.mknod("canal2", stat.S_IFIFO | 0o600)
print(stat.S_ISFIFO(os.stat("canal").st_mode), stat.S_ISFIFO(os.stat("canal2").st_mode))
pid = os.fork()
if pid == 0:
with open("canal", "w") as f:
f.write("mesaj de la copil")
os._exit(0)
with open("canal") as f:
print(f.read())
os.waitpid(pid, 0)
d = os.makedev(8, 1)
print(os.major(d), os.minor(d))
Rezultat
True True
mesaj de la copil
8 1
Greșeli frecvente
- Deschizi un FIFO pentru citire fără ca altcineva să-l deschidă pentru scriere: programul se blochează așteptând.
Comenzi înrudite
os.pipe(): Creează o „țeavă” anonimă: ce scrii la un capăt citești la celălalt.Path.exists(), is_file(), is_dir() și celelalte verificări: Verifică dacă o cale există și ce tip de element este.os.stat(), os.lstat() și os.fstat(): Toate informațiile despre un fișier: mărime, permisiuni, proprietar, date.