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.
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 的地址
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();
La création d'un shell simple est un excellent exemple de programmation système en action. Voici les étapes :
fgets()
. execv()
. 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!