LINUX.ORG.RU

Сообщения fortochkin

 

Зачем нужны разделы?

Зачем нужны разделы на жестком диске? При ДОС ФТ получается факап если на разделе закончилось место. При ЛВМ получается оверхед и еще один уровень абстракции.

В голову приходит что польза от использования разделов- возможность одновременного использования нескольких ФС, и большая надежность системы за счет более низкоуровневого отключения записи в раздел.

Последнее ненужно, т.к.,например, у каталога boot можно поставить только чтение, и это будет столько же надежно как вынести boot на другой раздел.

В плане всяких серверов, возможно разбиение диска необходимо, но зачем разбивать диск на домашней пекарне то?

 

fortochkin
()

Непонимаю я как открыть пайп

Вот стандартный пример из мана:

#include <sys/types.h>
       #include <sys/wait.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           int pipefd[2];
           pid_t cpid;
           char buf;

           if (argc != 2) {
               fprintf(stderr, "Usage: %s <string>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           if (pipe(pipefd) == -1) {
               perror("pipe");
               exit(EXIT_FAILURE);
           }

           cpid = fork();
           if (cpid == -1) {
               perror("fork");
               exit(EXIT_FAILURE);
           }

           if (cpid == 0) {    /* Child reads from pipe */
               close(pipefd[1]);          /* Close unused write end */

               while (read(pipefd[0], &buf, 1) > 0)
                   write(STDOUT_FILENO, &buf, 1);

               write(STDOUT_FILENO, "\n", 1);
               close(pipefd[0]);
               _exit(EXIT_SUCCESS);

           } else {            /* Parent writes argv[1] to pipe */
               close(pipefd[0]);          /* Close unused read end */
               write(pipefd[1], argv[1], strlen(argv[1]));
               close(pipefd[1]);          /* Reader will see EOF */
               wait(NULL);                /* Wait for child */
               exit(EXIT_SUCCESS);
           }
       }

Зачем делать fork? Почему нельзя сделать все в одном процессе?

Вот на примере конкретной задачи: необходимо прочитать файл и инвертировать его биты.

т.е. конвейер будет выглядеть так:

cat ./file | invert_bits | cat

почему не будет работать:

char buf;
pipe(pipefd)
while(read(pipefd[0],sizeof(buf),buf){
   buf ^= 0xff;
   write(read(pipefd[1],sizeof(buf),buf);
}
(код на компиляцию не проверял)

fortochkin
()

Поксорить (xor) раздел диска

Необходимо зашифровать раздел диска, простейшим способом,чтобы его нельзя было прочитать. Идеально подходит XOR т.к. быстро. Как зашифровать раздел диска используя только стандартные утилиты? Скрипт ксорящий по 1 байту ненужен.

 , ,

fortochkin
()

RSS подписка на новые темы