Назад к вопросам
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.