Как подходить к файловому вводу / выводу с помощью системных вызовов и каналов C? - PullRequest
0 голосов
/ 17 февраля 2019

Прежде всего, заранее извиняюсь за любой неаккуратный код - я относительно новичок в C. В настоящее время я пробираюсь через некоторое программирование для моего вводного класса ОС, но потратил слишком много часов своих выходных, пытаясьПеребирая сквозь эту проблему, я полагаю, что пришло время проглотить свою гордость и попытаться подтолкнуть ее в правильном направлении.Он имеет дело со сжатием основных текстовых файлов и предназначен для использования системных вызовов и каналов Unix.После вызова fork () один процесс должен обрабатывать чтение текстового файла (указанного в качестве аргумента командной строки), а затем отправлять данные по каналу другому процессу, который обрабатывает сжатие и запись в файл назначения.Протестировав версию этой программы, не относящуюся к каналу, я вполне уверен, что компрессионная система работает как задумано, но я думаю, что моя проблема заключается в совместном использовании данных канала.Я не думаю, что что-то проходит, основываясь на любительской отладке.

Программа также преждевременно завершает работу со следующей строкой:

Ошибка сегментации (ядро сброшено)

А вот и сам код:

(redacted)

Может кто-нибудь выяснить, в чем может быть проблема?Я был бы невероятно благодарен.

1 Ответ

0 голосов
/ 17 февраля 2019

Создайте трубу перед вилкой.Поскольку вы создаете отдельную трубу в каждом процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...