Connaissances Informatiques >> systèmes >> Unix >> Content
  Derniers articles
  • Quelle est la syntaxe de la commande…
  • Qu'est-ce qu'une page sale à Unix? 
  • Quels utilitaires sont utilisés pou…
  • Que signifie osd ? 
  • Expliquez différentes couches de sy…
  • Quel système d'exploitation souvent…
  • Quel shell de ligne de commande s’ou…
  • Quels sont les types de sockets sous…
  • Écrire un programme shell sous Unix…
  • Quelle est la sortie du fichier de c…
  •   Unix
  • Compétences informatiques de base

  • Linux

  • Mac OS

  • Ubuntu

  • Unix

  • fenêtres

  • windows Vista

  • windows XP

  • Windows 7

  • Windows 10

  • Windows 11

  • Windows 2012

  • Windows 2016

  • Windows 2019

  • Windows 2022

  • Apple

  • Android

  • iOS

  • CentOS
  •  
    Unix

    Que se passe-t-il si l’argument de exec n’est pas exécutable sous Linux ?

    Si l'argument de la famille de fonctions `exec` (par exemple, `execl`, `execv`, `execvp`) sous Linux n'est pas exécutable, l'appel `exec` échouera. Le processus ne passera *pas* à l'exécution du fichier spécifié.

    Spécifiquement:

    * `errno` sera défini : La variable globale `errno` sera définie pour indiquer l'erreur. La valeur la plus probable sera « ENOEXEC » (Erreur de format exécutable), ce qui signifie que le fichier n'est pas un exécutable valide pour l'architecture actuelle, ou « EACCES » (Autorisation refusée), ce qui signifie que le processus n'a pas l'autorisation d'exécuter le fichier (même s'il s'agit d'un exécutable valide). D'autres erreurs sont possibles en fonction des circonstances spécifiques (comme le fichier introuvable, `ENOENT`).

    Le processus initial continue : Le processus d'origine *continuera* son exécution. L'appel `exec` renverra -1 et le programme poursuivra son exécution à partir du point suivant l'échec de l'appel `exec`. C’est crucial; cela ne met pas fin au processus. Votre code doit vérifier la valeur de retour de « exec » pour gérer cette erreur avec élégance. Ignorer simplement la valeur de retour peut conduire à des bogues subtils et difficiles à déboguer.

    Exemple (C) :

    ```c

    #include

    #include

    #include

    #include

    int main() {

    int ret =execl("./nonexistent_program", "nonexistent_program", NULL);

    si (ret ==-1) {

    fprintf(stderr, "échec de l'exécution :%s\n", strerror(errno));

    renvoyer 1 ; // Indique une erreur

    }

    // Cette ligne ne sera atteinte que si execl réussit (ce qui ne sera pas le cas dans cet exemple)

    printf("Ceci ne doit pas être imprimé.\n");

    renvoie 0 ;

    }

    ```

    Ce code tente d'exécuter un programme inexistant. L'appel `execl` échouera, `errno` sera défini (probablement sur `ENOENT`), `strerror(errno)` donnera un message d'erreur lisible par l'homme, et le programme imprimera l'erreur et quittera avec un statut différent de zéro. Si le fichier existait mais ne disposait pas de l'autorisation d'exécution, « errno » serait probablement « EACCES ».

    En bref, un échec d'appel `exec` en raison d'un fichier non exécutable est une erreur d'exécution qui doit être gérée explicitement dans votre programme pour éviter un comportement inattendu. Vérifiez toujours la valeur de retour de « exec » et gérez les erreurs de manière appropriée.

     
    Article précédent:
    Article suivant:
    Articles recommandés
  • Unix System Services Formation 
  • Quelle est la structure de fichiers hiérarchique dans UNIX 
  • Quel est le rôle d’un shell sous Linux ? 
  • Qu'est-ce qui définit un ensemble standard de répertoires à utiliser par tous les systèmes Linux…
  • Comment faire pour convertir une date en Time Stamp Unix 
  • Que sont les paramètres de commande ? 
  • Qu'est-ce que la commande PUT ? 
  • Comment arrêter ou de redémarrer une machine Unix 
  • Comment changer le mot de passe root Unix Solaris après son expiration 
  • Quelle est la signification de w holdo127 ? 
  • Connaissances Informatiques © http://www.ordinateur.cc