Лаб. работа “Работа с файлами в Linux”
Цель
Познакомиться с основными системными вызовами Linux для работы с файлами.
Задачи
- Создание файла.
- Запись данных в файл.
- Чтение данных из файла.
- Изменение размера файла.
- Удаление файла.
Шаги выполнения
1. Создание файла: Создайте простую программу на языке Си, использующую системный вызов open()
, чтобы создать новый файл.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd;
fd = open("example.txt", O_CREAT | O_WRONLY, 0644);
if (fd == -1) {
perror("open");
return 1;
}
printf("Файл создан успешно!\n");
close(fd);
return 0;
}
2. Запись данных в файл: Модифицируйте программу так, чтобы она записывала строку в файл, используя системный вызов write()
.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
int fd;
char buffer[100] = "Привет, мир!";
fd = open("example.txt", O_WRONLY | O_APPEND);
if (fd == -1) {
perror("open");
return 1;
}
if (write(fd, buffer, strlen(buffer)) == -1) {
perror("write");
return 1;
}
printf("Данные успешно записаны в файл!\n");
close(fd);
return 0;
}
3. Чтение данных из файла: Добавьте код для чтения данных из файла, используя системный вызов read()
.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
int fd;
char buffer[100];
fd = open("example.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}
if (read(fd, buffer, sizeof(buffer)) == -1) {
perror("read");
return 1;
}
printf("Прочитанные данные: %s\n", buffer);
close(fd);
return 0;
}
4. Изменение размера файла: Добавьте возможность изменять размер файла, используя системный вызов ftruncate()
.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main() {
int fd;
fd = open("example.txt", O_RDWR);
if (fd == -1) {
perror("open");
return 1;
}
if (ftruncate(fd, 10) == -1) {
perror("ftruncate");
return 1;
}
printf("Размер файла изменен успешно!\n");
close(fd);
return 0;
}
5. Удаление файла: Напишите программу для удаления файла с помощью системного вызова unlink()
.
#include <stdio.h>
#include <unistd.h>
int main() {
if (unlink("example.txt") == -1) {
perror("unlink");
return 1;
}
printf("Файл успешно удален!\n");
return 0;
}
Заключение: После завершения этих шагов вы должны понимать основные системные вызовы Linux для работы с файлами. Проверьте каждую программу на выполнение и убедитесь, что они работают корректно.