Драйверы очень похожи на любую другую программу, они могут состоять из нескольких исходных файлов. Драйверы устройств Linux могут быть непосредственно скомпилированы в ядро или модуль ядра. Модули ядра обладают преимуществом способности, которая будет загружена динамично (т.е. Вы не должны компилировать новое ядро для использования их).
Можно, очевидно, всегда смотреть на исходный код Linux, но это может быть грандиозной задачей сначала. Однако как с чем-либо в драйверах Linux файлы. Это означает, что другие программы получают доступ к ним через интерфейс VFS. Например, можно управлять CD-ROM через ioctl()
вызовы с помощью его файла устройств.
Я настоятельно рекомендовал бы проверку Драйверов устройств Linux. Это в свободном доступе и ответит на Ваши вопросы. В частности, можно прочитать главу 2, которая показывает Вам, как создать простое "Привет, Ядро" модуль. Это может быть намного больше, чем Вы просите, но можно считать остатки, которыми Вы интересуетесь. И его свободное.; P
Можно использовать awk
режим абзаца (когда RS является пустой строкой). Тем путем каждый "набор" является одной записью, и можно легко распечатать последний.
iostat -d 1 2 | awk -vRS= 'END{print}'
С sed
:
sed '/^$/{$!{N;/\n$/D;s/.//;$!h;$p;d};};//!{H;1h;$!d};$x' infile
это должно напечатать последний набор непустых строк без каких-либо начальных / конечных пустых строк.
например.
iostat -d 1 2 | sed '/^$/{ # if the line is empty
$!{ # and if it's not the last line
N # then pull in the next line
/\n$/D # if also empty, delete up to \n, restart cycle
s/.// # otherwise delete leading \newline
$!h # copy over hold space if not last line
$p # or print pattern space if last line
d # then delete pattern space
}
}
//!{ # if the line isn't empty
H # append it to hold space
1h # if it's the first line, overwrite hold space
$!d # if it's not the last line, delete it
}
$x # on the last line, exchange buffers
'
RS="\n\n+"
было бы полезно? – l0b0 17.03.2011, 12:53RS
присвоение вBEGIN
блок. – glenn jackman 17.03.2011, 12:56awk -vRS= 'END{print}'
. Во-первых, потому что"\n\n"
версия распечатает пустую запись, если будет больше чем две пустых строки в конце входа. Во-вторых, потому что некоторые версии awk не позволяютRS
быть больше чем одним символом. ПустоеRS
означает “режим абзаца”, где любая последовательность двух или больше новых строк разделяет записи, и это требуется POSIX. – Gilles 'SO- stop being evil' 17.03.2011, 22:23