Моя цель - определить, сколько байтов было передано в конец записи в трубе. Возможно, нужно было бы получить доступ к элементу f_pos
структуры struct file
из linux/fs.h, связанного с этим каналом.Извлечь количество байтов, хранящихся в конце «write» анонимного Linux PIPE
Можно ли получить это значение из программы в пространстве пользователя? Опять же, я просто хотел бы определить (возможно, исходя из значения f_pos), сколько байтов хранится в буфере ядра, поддерживающем канал.
У меня есть чувство, что это не возможно, и один имеет не продолжать читать до read(int fd, void *buf, size_t count)
возвращает меньше байт, чем сосчитать .. то на данный момент, все байты были «опустошен» Я предполагаю, что ..
Добро пожаловать в переполнение стека! Здесь мы хотим, чтобы каждый вопрос поставил описание ** одной проблемы **. Но ваш пост представляет собой сразу несколько проблем: 1. «Определенная структура, которая отслеживает буфер» - это часть ** ядра **. 2. 'Должна быть какая-то структура, на которую указывает индекс, на который ссылается файловый дескриптор' - ядро сохраняет отображение из файловых дескрипторов для ** всех файлов **, а не только для * pipe *. 3. Байты, доступные в трубе, могут запрашиваться 'ioctl (fd, FIONREAD, & nbytes);'. Пожалуйста, отредактируйте вопрос и оставите в нем один вопрос/проблему. – Tsyvarev
Привет, это отвечало на все мои вопросы. Я на самом деле не заметил, что вы ответили на них, прежде чем внимательно читать свой комментарий. –