Есть уже готовые лабы на [C], но я не понимаю, как там работает код, а тратить кучу времени желания нет, есть кто может пояснить за код? Скину первые 2 лабы, но есть ещё 2. лаба 1 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if (pid == -1) { printf("Erorr"); exit(1); } else if (pid == 0) { execl("/bin/ls", "/bin/ls", "/home/astsu", 0); } else { printf("Parent process"); } return 0; } C #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if (pid == -1) { printf("Erorr"); exit(1); } else if (pid == 0) { execl("/bin/ls", "/bin/ls", "/home/astsu", 0); } else { printf("Parent process"); } return 0; } лаба 2 #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int main() { int fd, result; size_t size; char name[] = "test.fifo"; (void)umask(0); if (mknod(name, S_IFIFO | 0666, 0) < 0) { printf("Error in creating FIFO\n"); exit(-1); } if ((fd = open(name, O_WRONLY)) < 0) { printf("Error in opening FIFO for writing\n"); exit(-1); } while (1) { size = write(fd, "Hello, world!", 14); if (size != 14) { printf("Error in writing all string to FIFO\n"); exit(-1); } } close(fd); return 0; } C #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int main() { int fd, result; size_t size; char name[] = "test.fifo"; (void)umask(0); if (mknod(name, S_IFIFO | 0666, 0) < 0) { printf("Error in creating FIFO\n"); exit(-1); } if ((fd = open(name, O_WRONLY)) < 0) { printf("Error in opening FIFO for writing\n"); exit(-1); } while (1) { size = write(fd, "Hello, world!", 14); if (size != 14) { printf("Error in writing all string to FIFO\n"); exit(-1); } } close(fd); return 0; }
Red_fox, определяешь потомок или родитель и возвращаешь параметр. при -1 - это ошибка, при функции 0 - работает теперь с потомком, в любых других случаях с родителем во 2, массив нэйм. в условии создаешь файл с указанием название и мод и если меньше нуля, то нельзя создать лист с первым входом и с первым выходом (логично почему) и в вайле просто переписываешь, где фд - это открытие файла (только запись) и инициализация была во втором ифе и записываешь туда по элементно массив.