Sobes.tech
Назад к вопросам
Junior — Middle
90

Имел ли опыт работы с системными вызовами ядра Linux?

Компании, где спрашивали
Дигинарис

Ответ от нейросети

sobes.tech AI

Системные вызовы ядра Linux — это интерфейс между пользовательским пространством и ядром ОС, позволяющий программам запрашивать у ядра выполнение операций, требующих привилегий, например, работу с файлами, процессами, сетью и т.д. Опыт работы с ними обычно включает использование таких функций, как open(), read(), write(), fork(), execve() и других.

Пример простого системного вызова для чтения файла на C:

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main() {
    int fd = open("file.txt", O_RDONLY);
    if (fd == -1) {
        perror("open");
        return 1;
    }
    char buffer[100];
    ssize_t bytesRead = read(fd, buffer, sizeof(buffer)-1);
    if (bytesRead == -1) {
        perror("read");
        close(fd);
        return 1;
    }
    buffer[bytesRead] = '\0';
    printf("Read: %s\n", buffer);
    close(fd);
    return 0;
}

Такой код напрямую вызывает системные вызовы через стандартные обертки libc, что позволяет взаимодействовать с ядром Linux.