Рубрики
Uncategorized

Смотрите код работы — понять позже — 2

Мы можем прочитать очень сложный человек, запустив простую программу — вилка, труба, нить, Главная страница

Автор оригинала: Duc Duy Bui.

Мы успешно бегаем код, увидели результат с очень мало понять. Это действительно лучше, чем писать много кода, увидев сотни ошибок и отказаться от изучения новых технологий.

Этот пост фокусируется на том, как понять предыдущий код:

труба (FD);

Мы можем прочитать страницу человека или учебную страницу о трубе. Например, https://man7.org/linux/man-pages/man2/pipe.2.html

Труба () создает трубу, однонаправленный канал данных, который может быть использован для интерпретирования связи. Это означает, что это:

  • Канал данных
  • Коммуникация по интерфейсам: родительский процесс отправляет в детский процесс/дочерний процесс, получает родительский процесс или дочерний процесс, отправляет на родительский процесс/родительский процесс получает от детей.
труба

Рисуя картину, мы узнаем, что дочерний процесс/родитель может писать или читать с трубы. Мы можем представить, что у трубы есть два конца: один для «напиши» или один для «чтения». (На самом деле, когда вызывается вилка, переменная дублирована)

Следующий вопрос приходит: как мы знаем, какой конец читается, какой из них написан. Мы продолжаем читать, что выше ссылки:

PipeFD [0] относится к чтению трубы. PipeFD [1] относится к концу записи трубы

Итак, если мы хотим писать в трубу, TipeFD [1] используется. Если мы хотим читать с трубы, используется TipeFD [0].

Все идет нормально. Настало время проверить. В чем проблема, если только родитель и ребенок используют только для чтения? Мы редактируем код и тест:

Если (ChattPid) {//закрывается (FD [0]); Написать (FD [0], строка (стрин (строка) +1)); Выход (0); } else {//закрывается (FD [1]);

nbytes = read(fd[0], readbuffer, sizeof(readbuffer));
printf("Received string: %s", readbuffer);

} Беги и посмотрите результат:

runforever.png.png.png.

О, программа работает навсегда. Теперь продолжайте читать:

Если процесс пытается прочитать из пустой трубы, то прочитайте (2) заблокируют, пока данные не будут доступны.

В вышеуказанном модифицированном коде родитель ждет навсегда читать из трубы (без данных).

Поздравляю! Мы можем прочитать очень сложную страницу человека, запустив простую программу.

Следующий пост: другие проблемы могут быть обнаружены этим простым кодом.

Спасибо за чтение!

Оригинал: «https://www.codementor.io/@duydb0181/see-it-run-understand-later-2-1i95oqxqma»