Un tuyau nommé parfois appelé FIFO, est un moyen d'interaction interprète dans l'informatique. C'est une version linux de la notion de pipe classique. Un tuyau traditionnel est «sans nom» et ne dure que aussi longtemps que la procédure. D'un autre côté, un tuyau nommé peut durer tant que le système est opérationnel, même si le processus n'est plus actif. S'il n'est plus nécessaire, il peut être supprimé. Un tuyau nommé apparaît généralement en tant que fichier et les processus se connectent à lui pour l'interaction interprète.
Un fichier FIFO est un type de fichier de stockage local qui permet à deux processus ou plus d'interagir les uns avec les autres en lisant et en écrivant à et depuis. L'inconvénient principal des tuyaux est qu'ils ne peuvent être utilisés que par un seul processus, qui peut avoir des lecteurs et des écrivains ou des processus qui utilisent la même liste de descripteurs de fichiers; En conséquence, les tuyaux ont un inconvénient majeur: ils ne peuvent pas transmettre des données sur des processus qui ne sont pas liés. C'est tel qu'ils ne partagent pas de tableau de descripteur de fichiers. Cependant, si les tuyaux reçoivent des noms, ils peuvent être lus et écrits comme n'importe quel autre fichier. Les processus n'ont même pas besoin de se connecter.
Les tuyaux nommés sont FIFO, je.e. Premier dans, les premiers tuyaux. La coque peut être utilisée pour générer des FIFO. Ils peuvent cependant être effectués avec la programmation C en utilisant l'appel système MKNOD (). L'option Mode détermine les autorisations qui seront utilisées ainsi que le type de nœud qui sera généré. Il devrait être un peu ou une conjonction de l'un des types de fichiers ci-dessous et des privilèges du nouveau nœud. L'UMask du processus modifie les autorisations comme d'habitude: les autorisations du nœud généré. Si mKnod () réussit, il renvoie zéro; Sinon, il revient -1.
Syntaxe
int mKnod (const char * nameofPath, mode_t mode, dev_t dev);Le chemin d'accès que vous utilisez pour le fichier est le chemin d'accès. Un ensemble de bits qui décrivent le type de fichier et les privilèges d'accès que vous avez l'intention d'utiliser est appelé «mode». S_ifdir, qui est utilisé pour construire un répertoire, et S_IFIFO, qui est utilisé pour établir un FIFO, sont les seuls types de fichiers autorisés. La plupart du temps, Dev est «ignoré."
Exemple
Après avoir expliqué le concept de base et la syntaxe de l'appel du système MKNOD () dans le langage de programmation C, nous avons défini un exemple pour la compréhension de notre utilisateur. Nous implémentons notre exemple de code dans l'Ubuntu 20.04 Système d'exploitation Linux avec un compilateur GCC pour exécution et compilation de code. Nous avons utilisé la commande nano dans le shell pour la création du fichier. Pour exécuter un exemple dans le langage C, nous avons utilisé le «.C ”Extension de fichier.
Exécutons la commande ci-dessous répertoriée dans la console de l'Ubuntu 20.04 Système d'exploitation Linux pour la création de fichiers.
$ nano w.cDans notre cas, le nom du fichier est «W.C ", vous pouvez également le modifier. Maintenant, le fichier sera créé et s'ouvrira dans l'éditeur GNU. Vous devez écrire le script affiché dans l'image ci-dessous.
Le script peut être modifié en fonction de votre travail, mais à cette fin, vous devez bien comprendre cet exemple de base. Le descripteur de fichier par défaut pour un programme pour rédiger des messages d'avertissement est dirigé, souvent connu sous le nom d'erreur standard. L'erreur est imprimée à l'écran de sortie ou à la borne de fenêtre à l'aide de Steer. Steer a été l'une des sorties de commande, similaire à Stdout, qui est souvent enregistrée ailleurs. S_irusr est une constante macro POSIX trouvée dans SYS / STAT. H. Le bit d'autorisation de lecture de l'utilisateur est ce qu'il s'appelle. Les préfixes S_ RUSR pourraient se référer au statut, comme la lecture de l'utilisateur. S_irusr est une constante macro POSIX trouvée dans SYS / STAT. H. Le bit d'accès à lecture de l'utilisateur est ce qu'il s'appelle. Les préfixes S_ RUSR pourraient se référer au statut, comme la lecture de l'utilisateur. Nous voulons fournir à l'utilisateur une lecture et écrire un accès dans cette situation. En conséquence, nous définissons le mode sur S IRUSR | S iwusr | S ififo. Dev est vérifié si le type de fichier est s_ifchr ou s_ifblk; Cependant, il est ignoré.
En conséquence, nous avons utilisé 0 comme paramètre. La méthode perror () renvoie un message d'erreur standard détaillant l'erreur la plus récente rencontrée lors de l'appel d'un système ou d'une fonction de bibliothèque. Après avoir écrit et compris le script, vous devez fermer le fichier et simplement revenir à la console. Exécutons la commande ci-dessous dans l'ubuntu 20.04 Console du système d'exploitation Linux pour la compilation et l'exécution de scripts.
$ gcc w.cEn regardant l'image ci-dessus, vous pouvez facilement identifier qu'aucune erreur ne survient lors de la compilation. La sortie attendue peut également être vue à l'écran.
Conclusion
Cet article concernait l'appel du système MKNOD () dans le langage de programmation C. Nous avons fait de notre mieux pour vous éclairer sur l'utilisation de base de l'appel du système MKNOD (). La syntaxe de l'appel système MKNOD () a été expliquée pour la compréhension des utilisateurs. L'exemple utilisé dans ce guide est très simple, et les utilisateurs novices peuvent également comprendre dans le premier aller. J'espère que cet article vous guidera chaque fois que vous essayez d'utiliser l'appel du système MKNOD () dans le langage de programmation C.