LINUX.ORG.RU

Ответ на: комментарий от ossa

FILE это стандарт C

Аааа, это для тех ОС которые не UNIX, да? Т.е. мне можно не париться? А то я всегда юзаю open вместо fopen и чувствую себя лохом.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от ossa

Да шо ты говоришь!

Это если хочется иметь проблемы с буферизацией. А я, например, иной раз отрубаю нафиг буферизацию stdout! Хочется мне так! Не люблю я, когда надо ждать до \n

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от true_admin

Можно не парится, да. если никуда переносить не нужно потом.

ossa ★★
()
Ответ на: комментарий от unt1tled

за тем же, зачем нужна вся libc

для strstr(), getenv(), etc? но это не сисвызовы

anonymous
()
Ответ на: комментарий от Eddy_Em

Вот что-то я сомневаюсь, что это твоё сообщение будет весомым аргументом.

Иной раз кажется, что тебе хочется иметь проблемы всегда :)

Deleted
()

Какие преимущества даёт использование FILE из libc перед «сырыми» fd? Ну, кроме буферизации на стороне процесса.

в основном дает недостатки. кроме буферизации и кроссплатформенности, ога.

waker ★★★★★
()
Ответ на: комментарий от ossa

И как _твой_ геморой

Мне кажется, это весьма распространённые грабли. С stdout я до сих пор периодически спотыкаюсь. Ну fflush/fsync-грабли.

true_admin ★★★★★
() автор топика

Ну, кроме буферизации на стороне процесса.

Сам ответил на свой вопрос

lisper-pipisper
()
Ответ на: комментарий от Deleted

Проблема — это вместо нормального open/read/write/close использовать буферизованные операции.

Единственное исключение — ты работаешь с текстовым файлом и тебе тупо нужно построчно читать-писать.

Eddy_Em ☆☆☆☆☆
()

тем, что FILE и все fxxxx входят в стандарт. И, теоретически, должны работать везде одинаково предсказуемо.

Насильно их использовать никто не заставляет. open или CreateFile иногда более годны под задачи.

Ну и про буферизацию ...

man setbuf

anonymous
()

удобный слой абстракции, у всего свои применения

wakuwaku ★★★★
()

man fopencookie например. если рассматривать FILE и к° как абстрактный класс то можно запилить реализацию іо прямо в юзерспейсе. в случае с дескрипторами нужно было бы городить модуль ядра с чардев например.

anonymous
()
Ответ на: комментарий от anonymous

А теперь скажи, чем этот дурацкий FILE лучше стандартного решения в виде mmap?

Если ты работаешь с входным текстовым файлом, то логичней его mmap'нуть и работать уже так, как будто бы ты весь файл в буфер считал, нежели сношать мозг с дурацкими fgets'ами!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Строго говоря, зачастую буфер быстрее работает (когда данные маленькими порциями поступают), т.к. дерганье головки на диске из-за каждого байта - не самая хорошая идея (оперативка в сотни раз быстрее работает). Главное не забывай буфер сбрасывать на диск в конце работы с файлом, иначе можно данных не досчитаться. А иногда да, буферизованные операции не нужны, но это скорее редкость.

А всякие mmap-ы, которые «лениво» читают файл это только POSIX, а код не только для Linux-а, BSD и MacOSX пишется, как не удивительно.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

А с чего ты решил, что я побайтно считываю? Нафиг такое извращение? Буферами. Но это редко. Обычно я просто mmap делаю и не трахаю свой мозг!

это только POSIX, а код не только для Linux-а, BSD и MacOSX пишется, как не удивительно

Мне мастдайка 100 лет не всралась! Мастдайкодрочеры пусть уже сдохнут в конце-концов!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Используя FILE можно написать такие несколько няшные и портабельные штуки, как libtiff (тебе, как учоному, должно быть это весьма интересно) или libtasn1 например.

Кстати вопрос. А ты можешь своим коі8-р напечатать букву ї?

anonymous
()

R. Love в «Linux System Programming» разъяснял в некоторой мере.

Krieger_Od ★★
()
Ответ на: комментарий от anonymous

ЕМНИП, в КОИ-8 нет даже русских типографских кавычек-«ёлочек», символа параграфа и koi-чего ещё. Во многих КОИ-шрифтах даже буквы Ё нет, хотя место в кодовой таблице для неё вроде бы предусмотрено...

hobbit ★★★★★
()
Ответ на: комментарий от anonymous

А ты можешь своим коі8-р напечатать букву ї?

У меня в языке этой буквы нет. На кой черт она мне нужна?

А в латехе могу: \"\imath

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Shadow1251

Вай, что ты говоришь! Сколько лет работал с сокетами, трубами и tty при помощи обычных read/write, а ты мне прямо-таки глаза открыл, какой я был идиот, что не ездил на велосипеде с квадратными колесами!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от hobbit

Вот вся таблица:

chartable 

 32 [0x20] -  	 64 [0x40] - @	 96 [0x60] - `	128 [0x80] - ─	160 [0xa0] - ═	192 [0xc0] - ю	224 [0xe0] - Ю	
 33 [0x21] - !	 65 [0x41] - A	 97 [0x61] - a	129 [0x81] - │	161 [0xa1] - ║	193 [0xc1] - а	225 [0xe1] - А	
 34 [0x22] - "	 66 [0x42] - B	 98 [0x62] - b	130 [0x82] - ┌	162 [0xa2] - ╒	194 [0xc2] - б	226 [0xe2] - Б	
 35 [0x23] - #	 67 [0x43] - C	 99 [0x63] - c	131 [0x83] - ┐	163 [0xa3] - ё	195 [0xc3] - ц	227 [0xe3] - Ц	
 36 [0x24] - $	 68 [0x44] - D	100 [0x64] - d	132 [0x84] - └	164 [0xa4] - ╓	196 [0xc4] - д	228 [0xe4] - Д	
 37 [0x25] - %	 69 [0x45] - E	101 [0x65] - e	133 [0x85] - ┘	165 [0xa5] - ╔	197 [0xc5] - е	229 [0xe5] - Е	
 38 [0x26] - &	 70 [0x46] - F	102 [0x66] - f	134 [0x86] - ├	166 [0xa6] - ╕	198 [0xc6] - ф	230 [0xe6] - Ф	
 39 [0x27] - '	 71 [0x47] - G	103 [0x67] - g	135 [0x87] - ┤	167 [0xa7] - ╖	199 [0xc7] - г	231 [0xe7] - Г	
 40 [0x28] - (	 72 [0x48] - H	104 [0x68] - h	136 [0x88] - ┬	168 [0xa8] - ╗	200 [0xc8] - х	232 [0xe8] - Х	
 41 [0x29] - )	 73 [0x49] - I	105 [0x69] - i	137 [0x89] - ┴	169 [0xa9] - ╘	201 [0xc9] - и	233 [0xe9] - И	
 42 [0x2a] - *	 74 [0x4a] - J	106 [0x6a] - j	138 [0x8a] - ┼	170 [0xaa] - ╙	202 [0xca] - й	234 [0xea] - Й	
 43 [0x2b] - +	 75 [0x4b] - K	107 [0x6b] - k	139 [0x8b] - ▀	171 [0xab] - ╚	203 [0xcb] - к	235 [0xeb] - К	
 44 [0x2c] - ,	 76 [0x4c] - L	108 [0x6c] - l	140 [0x8c] - ▄	172 [0xac] - ╛	204 [0xcc] - л	236 [0xec] - Л	
 45 [0x2d] - -	 77 [0x4d] - M	109 [0x6d] - m	141 [0x8d] - █	173 [0xad] - ╜	205 [0xcd] - м	237 [0xed] - М	
 46 [0x2e] - .	 78 [0x4e] - N	110 [0x6e] - n	142 [0x8e] - ▌	174 [0xae] - ╝	206 [0xce] - н	238 [0xee] - Н	
 47 [0x2f] - /	 79 [0x4f] - O	111 [0x6f] - o	143 [0x8f] - ▐	175 [0xaf] - ╞	207 [0xcf] - о	239 [0xef] - О	
 48 [0x30] - 0	 80 [0x50] - P	112 [0x70] - p	144 [0x90] - ░	176 [0xb0] - ╟	208 [0xd0] - п	240 [0xf0] - П	
 49 [0x31] - 1	 81 [0x51] - Q	113 [0x71] - q	145 [0x91] - ▒	177 [0xb1] - ╠	209 [0xd1] - я	241 [0xf1] - Я	
 50 [0x32] - 2	 82 [0x52] - R	114 [0x72] - r	146 [0x92] - ▓	178 [0xb2] - ╡	210 [0xd2] - р	242 [0xf2] - Р	
 51 [0x33] - 3	 83 [0x53] - S	115 [0x73] - s	147 [0x93] - ⌠	179 [0xb3] - Ё	211 [0xd3] - с	243 [0xf3] - С	
 52 [0x34] - 4	 84 [0x54] - T	116 [0x74] - t	148 [0x94] - ■	180 [0xb4] - ╢	212 [0xd4] - т	244 [0xf4] - Т	
 53 [0x35] - 5	 85 [0x55] - U	117 [0x75] - u	149 [0x95] - ∙	181 [0xb5] - ╣	213 [0xd5] - у	245 [0xf5] - У	
 54 [0x36] - 6	 86 [0x56] - V	118 [0x76] - v	150 [0x96] - √	182 [0xb6] - ╤	214 [0xd6] - ж	246 [0xf6] - Ж	
 55 [0x37] - 7	 87 [0x57] - W	119 [0x77] - w	151 [0x97] - ≈	183 [0xb7] - ╥	215 [0xd7] - в	247 [0xf7] - В	
 56 [0x38] - 8	 88 [0x58] - X	120 [0x78] - x	152 [0x98] - ≤	184 [0xb8] - ╦	216 [0xd8] - ь	248 [0xf8] - Ь	
 57 [0x39] - 9	 89 [0x59] - Y	121 [0x79] - y	153 [0x99] - ≥	185 [0xb9] - ╧	217 [0xd9] - ы	249 [0xf9] - Ы	
 58 [0x3a] - :	 90 [0x5a] - Z	122 [0x7a] - z	154 [0x9a] -  	186 [0xba] - ╨	218 [0xda] - з	250 [0xfa] - З	
 59 [0x3b] - ;	 91 [0x5b] - [	123 [0x7b] - {	155 [0x9b] - ⌡	187 [0xbb] - ╩	219 [0xdb] - ш	251 [0xfb] - Ш	
 60 [0x3c] - <	 92 [0x5c] - \	124 [0x7c] - |	156 [0x9c] - °	188 [0xbc] - ╪	220 [0xdc] - э	252 [0xfc] - Э	
 61 [0x3d] - =	 93 [0x5d] - ]	125 [0x7d] - }	157 [0x9d] - ²	189 [0xbd] - ╫	221 [0xdd] - щ	253 [0xfd] - Щ	
 62 [0x3e] - >	 94 [0x5e] - ^	126 [0x7e] - ~	158 [0x9e] - ·	190 [0xbe] - ╬	222 [0xde] - ч	254 [0xfe] - Ч	
 63 [0x3f] - ?	 95 [0x5f] - _	127 [0x7f] - 	159 [0x9f] - ÷	191 [0xbf] - ©	223 [0xdf] - ъ	255 [0xff] - Ъ	

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Так ты ж сам сказал, что у тебя в языке этой буквы нет, зачем она тебе нужна. А я спрашиваю, у тебя в языке и латиницы нет, зачем тебе латиница тогда?

anonymous
()
Ответ на: комментарий от hobbit

Там нет не только «ёлочек». Нет буквы «ё», буквы расставлены не по алфавиту (доп проблемы если нужна сортировка), нет букв нац. алфавитов и т.д. Я согласен, что однобайтовая кодировка имеет свои преимущества, но КОИ-8, ИМХО, нужна только если требуется совместимость

at ★★
()
Ответ на: комментарий от Eddy_Em

А ещё и учоный. Тебе не стыдно, дружок? У тебя хоть статьи есть какие-нибудь цитируемые? Ну, кроме как в „весник эниуни"?

anonymous
()
Ответ на: комментарий от anonymous

Писец ты логичный. Не, статьи не пишу. Нафиг.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от peregrine

оперативка в сотни раз быстрее работает

в сотни? позиционирование головки обходится в 8мс+ на современных массовых винчестерах.

next_time ★★★★★
()
Ответ на: комментарий от next_time

В одноканальном режиме DDR3-2400 имеет скорость передачи данных 19200 МБ/с. Время цикла ~ 3,33 нс (время полного доступа тоже где-то такое, поскольку уже у DDR2 время цикла было 5нс и время полного доступа от 25 до 7,5 нс). Ну и сравни это с 8 мс у диска (8 мс=8 000 нс) даже не в 100 раз выходит, а в 2400 раз. Теперь скоростью записи (пусть головка медленно позиционируется, пишется может быстрее?). Нет, скорость записи на типичный (очень хороший) в идеальных условиях HDD примерно 130 Мб/с. 19200/130*8=147*8=1181. Откуда взялась 8? МБ - мегабайты, Мб - мебибайты. И того да, был неправ, надо было писать в тысячи.

peregrine ★★★★★
()
Ответ на: комментарий от post-factum

https://stackoverflow.com/questions/1658476/c-fopen-vs-open
fopen provides you with buffering IO that may turn out to be a lot faster than what you're doing with open.

Можно было сделать опциональным через флаг

fopen does line ending translation if the file is not opened in binary mode, which can be very helpful if your program is ever ported to a non-Unix environment.

Аналогично.

A FILE * gives you the ability to use fscanf and other stdio functions.

Эти функции просто принимали бы fd.

Your code may someday need to be ported to some other platform that only supports ANSI C and does not support the open function.

Если бы в стандарте были бы open/write etc., то, наоборот, зоопарка было бы меньше. Может быть даже в win32 не изобретали свои OpenFile и т.п.

anonymous
()
Ответ на: комментарий от anonymous

А ещё и учоный

Мне всё больше кажется, что нифига он не учёный, а подсобный рабочий. Залить жидкий азот в инфракрасный детектор, отъюстировать какой-нибудь телескопчик, принести тот тяжелый противовес, подпаять провод итд итп.

lisper-pipisper
()
Ответ на: комментарий от next_time

обосрался

сделай вид, что троллил

anonymous
()
Ответ на: комментарий от post-factum

А что, не тупняк? fopen нахрен не нужен! Если надо какую-то элементарщину сделать, обычный open эффективней. Если что посложней — нужен mmap.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.