Maison >développement back-end >C++ >Plongez dans la programmation système : guide du débutant en C

Plongez dans la programmation système : guide du débutant en C

WBOY
WBOYoriginal
2024-10-09 19:33:21852parcourir

Dive into Systems Programming: A Beginner's Guide to C

Exploration de la programmation système : guide du débutant en C

La programmation système implique une interaction avec le matériel et les logiciels sous-jacents d'un ordinateur. C est l’un des langages préférés pour la programmation système en raison de sa capacité à accéder directement aux ressources matérielles. Ce guide vous fera découvrir la programmation système, des bases du langage C aux cas d'application pratiques.

Bases du langage C

Variables et types de données :
Les variables sont utilisées pour stocker des données. En C, les variables doivent déclarer leur type de données, par exemple :

int age; // 声明一个整型变量 "age"

Fonction :
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. La syntaxe de la fonction C est la suivante :

int add(int x, int y) {
  return x + y;
}

Pointeur :
Les variables pointeur pointent vers l'adresse mémoire d'autres variables. Ils sont utilisés pour gérer dynamiquement la mémoire.

int num = 3;
int *ptr = # // ptr 指向变量 num 的地址

Concepts de programmation système

Gestion de la mémoire :
La programmation système implique la gestion directe de la mémoire. Vous devez savoir comment allouer et libérer de l'espace mémoire.

// 分配 sizeof(int) 字节的内存
int *p = malloc(sizeof(int));

// 释放内存
free(p);

E/S de fichier :
Les opérations d'E/S de fichier sont cruciales pour la programmation du système. Les fichiers peuvent être manipulés à l'aide des fonctions fopen(), fread() et fwrite().

// 打开 "test.txt" 文件
FILE *file = fopen("test.txt", "r");

// 读取文件内容
char buffer[1024];
fread(buffer, 1, 1024, file);

// 关闭文件
fclose(file);

Interaction avec le système d'exploitation :
Le langage C fournit des appels système pour interagir avec le système d'exploitation. Ces appels permettent à un programme d'effectuer des tâches spécifiques, telles que la création ou la fin d'un processus.

// 创建一个子进程
pid_t pid = fork();

Exemple pratique : création d'un shell simple

La création d'un shell simple est un excellent exemple de programmation système en action. Voici les étapes :

  1. Initialiser les variables : Y compris les flux d'entrée, de sortie et d'erreur standard.
  2. Lire les entrées de l'utilisateur : Utilisez la fonction fgets().
  3. Analysez la commande : Divisez la chaîne de commande en mots et paramètres.
  4. Exécutez la commande : Utilisez la fonction execv().
  5. Gestion des erreurs : Gérer les erreurs d'exécution des commandes.

Le code complet est le suivant :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main() {
  char input[1024]; // 存储用户输入
  char *words[512]; // 存储命令和参数
  pid_t pid; // 子进程 ID

  while (1) {
    // 读取用户输入
    printf("> ");
    fgets(input, 1024, stdin);

    // 解析命令
    int num_words = tokenize(input, words);

    // 执行命令
    pid = fork();
    if (pid == 0) {
      // 子进程
      execv(words[0], words);
      perror("execv failed");
      exit(1);
    } else if (pid > 0) {
      // 父进程
      waitpid(pid, NULL, WUNTRACED);
    } else {
      // fork 失败
      perror("fork failed");
    }
  }

  return 0;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn