add examples to lab1

This commit is contained in:
2025-10-04 18:44:43 +07:00
parent dcb6328674
commit 0f2deb8b32
3 changed files with 85 additions and 0 deletions

32
lab_1/examples/file.c Normal file
View File

@@ -0,0 +1,32 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
// пример программы обработки текстового файла средствами системых вызовов Linux
// учебник "Системное программирование в среде Linux", Гунько А.В.
int main(int argc, char *argv[]) {
int handle, numRead, total= 0;
char buf;
if (argc<2) {
printf("Usage: file textfile\n");
exit(-1);
}
// низкоуровневое открытие файла на чтение
handle = open( argv[1], O_RDONLY);
if (handle<0) {
printf("Error %d (%s) while open file: %s!\n",errno, strerror(errno),argv[1]);
exit(-2);
}
// цикл до конца файла
do {
// посимвольное чтение из файла
numRead = read( handle, &buf, 1);
if (buf == 0x20) total++; }
while (numRead > 0);
// Закрытие файла
close( handle);
printf("(PID: %d), File %s, spaces = %d\n", getpid(), argv[1], total);
// возвращаемое программой значение
return( total); }