.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1980, 1991 Regents of the University of California. .\" All rights reserved. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)ioctl.2 6.4 (Berkeley) 3/10/91 .\" .\" Modified 1993-07-23 by Rik Faith .\" Modified 1996-10-22 by Eric S. Raymond .\" Modified 1999-06-25 by Rachael Munns .\" Modified 2000-09-21 by Andries Brouwer .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ioctl 2 "31 octombrie 2023" "Pagini de manual de Linux 6.06" .SH NUME ioctl \- controlează dispozitivul .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .P \fBint ioctl(int \fP\fIfd\fP\fB, unsigned long \fP\fIrequest\fP\fB, ...);\fP\f[R] /* glibc, BSD */\fR \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIrequest\fP\fB, ...);\fP\f[R] /* musl, alte UNIX */\fR .fi .SH DESCRIERE Apelul de sistem \fBioctl\fP() manipulează parametrii de dispozitiv subiacente ai fișierelor speciale. În special, multe dintre caracteristicile de funcționare ale fișierelor speciale de caractere (de exemplu, terminale) pot fi controlate cu ajutorul cererilor \fBioctl\fP(). Argumentul \fIfd\fP trebuie să fie un descriptor de fișier deschis. .P Al doilea argument este un cod de solicitare care depinde de dispozitiv. Cel de\-al treilea argument este un indicator de memorie fără tip. În mod tradițional, este \fBchar *\fP\fIargp\fP (din zilele de dinainte ca \fBvoid *\fP să fie valabil în C) și va fi numit astfel pentru această discuție. .P O \fIcerere\fP \fBioctl\fP() are codificată în ea însăși dacă argumentul este un parametru de \fIintrare\fP sau un parametru de \fIieșire\fP, precum și dimensiunea argumentului \fIargp\fP în octeți. Macrocomenzile și definițiile utilizate în specificarea unei \fIcerer\fP \fBioctl\fP() sunt localizate în fișierul \fI\fP. A se vedea NOTE. .SH "VALOAREA RETURNATĂ" De obicei, în caz de succes, se returnează zero. Câteva cereri \fBioctl\fP() utilizează valoarea de returnare ca parametru de ieșire și returnează o valoare nenegativă în caz de succes. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEBADF\fP \fIdescriptor\-fișier\fP nu este un descriptor de fișier valid. .TP \fBEFAULT\fP \fIargp\fP face referire la o zonă de memorie inaccesibilă. .TP \fBEINVAL\fP \fIrequest\fP (cererea) sau \fIargp\fP nu sunt valide. .TP \fBENOTTY\fP \fIfd\fP nu este asociat cu un dispozitiv special de caractere. .TP \fBENOTTY\fP Cererea specificată nu se aplică tipului de obiect la care face referire descriptorul de fișier \fIfd\fP. .SH VERSIUNI Argumentele, returnările și semantica lui \fBioctl\fP() variază în funcție de controlorul de dispozitiv în cauză (apelul este utilizat ca o soluție de tip „catch\-all” (capturează\-tot) pentru operațiile care nu se încadrează în mod clar în modelul fluxului de In/Ieș UNIX). .SH STANDARDE Niciunul. .SH ISTORIC AT&T UNIX versiunea\~7 are .PD 0 .in +4n .nf \fBioctl(int \fP\fIfildes\fP\fB, int \fP\fIrequest\fP\fB, struct sgttyb *\fP\fIargp\fP\fB);\fP .fi .in .P .PD (unde \fBstruct sgttyb\fP a fost folosită istoric de \fBstty\fP(2) și \fBgtty\fP(2) și este polimorfă în funcție de tipul de cerere (așa cum ar fi fost un \fBvoid *\fP, dacă ar fi fost disponibil)). .P SysIII documentează \fIarg\fP fără niciun tip. .P 4.3BSD are .PD 0 .in +4n .nf \fBioctl(int \fP\fId\fP\fB, unsigned long \fP\fIcerere\fP\fB, char *\fP\fIargp\fP\fB);\fP .fi .in .P .PD (cu \fBchar *\fP în mod similar cu \fBvoid *\fP). .P SysVr4 are .PD 0 .in +4n .nf \fBint ioctl(int \fP\fIfildes\fP\fB, int \fP\fIcerere\fP\fB, ... /* \fP\fIarg\fP\fB */);\fP .fi .in .P .PD .SH NOTE .\" Pentru a utiliza acest apel, este nevoie de un descriptor de fișier deschis. Adesea, apelul \fBopen\fP(2) are efecte secundare nedorite, care pot fi evitate în Linux prin aplicarea fanionului \fBO_NONBLOCK\fP. .SS "structura ioctl" .\" added two sections - aeb Valorile comenzii ioctl sunt constante pe 32 de biți. În principiu, aceste constante sunt complet arbitrare, dar oamenii au încercat să le construiască o anumită structură. .P Vechea situație din Linux era cea a constantelor pe 16 biți, în care ultimul octet este un număr serial, iar octetul (octeții) precedent(i) oferă un tip care indică controlorul. Uneori se folosea numărul principal: 0x03 pentru ioctl\-urile \fBHDIO_*\fP, 0x06 pentru ioctl\-urile \fBLP*\fP. Iar uneori erau folosite una sau mai multe litere ASCII. De exemplu, \fBTCGETS\fP are valoarea 0x00005401, cu 0x54 = „T” indicând controlorul terminalului, iar \fBCYGETTIMEOUT\fP are valoarea 0x00435906, cu 0x43 0x59 = „C” „Y” indicând controlorul de „cyclades”. .P Mai târziu (0.98p5), în număr au fost introduse mai multe informații. Unul are 2 biți de direcție (00: niciunul, 01: scriere, 10: citire, 11: citire/scriere), urmat de 14 biți de dimensiune (care dau dimensiunea argumentului), urmat de un tip pe 8 biți (care colectează ioctl\-urile în grupuri pentru un scop comun sau un controlor comun) și un număr de serie pe 8 biți. .P Macrocomenzile care descriu această structură se află în \fI\fP și sunt \fB_IO(tip,nr)\fP și \fB{_IOR,_IOW,_IOWR}(tip,nr,dimensiune)\fP. Acestea utilizează \fIsizeof(size)\fP, astfel încât „size” (dimensiunea) este un termen greșit aici: acest al treilea argument este un tip de date. .P Rețineți că biții de dimensiune sunt foarte nesiguri: în multe cazuri sunt greșiți, fie din cauza unor macroprograme cu erori care utilizează \fIsizeof(sizeof(struct))\fP, fie din cauza valorilor vechi. .P Astfel, se pare că noua structură a oferit doar dezavantaje: nu ajută la verificare, dar determină valori diferite pentru diferitele arhitecturi. .SH "CONSULTAȚI ȘI" .\" .BR mt (4), \fBexecve\fP(2), \fBfcntl\fP(2), \fBioctl_console\fP(2), \fBioctl_fat\fP(2), \fBioctl_ficlone\fP(2), \fBioctl_ficlonerange\fP(2), \fBioctl_fideduperange\fP(2), \fBioctl_fslabel\fP(2), \fBioctl_getfsmap\fP(2), \fBioctl_iflags\fP(2), \fBioctl_ns\fP(2), \fBioctl_tty\fP(2), \fBioctl_userfaultfd\fP(2), \fBopen\fP(2), \fBsd\fP(4), \fBtty\fP(4) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .