язык сообщений Meetme && CALL file && PRI(DAHDI)
Сообщений: 866
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
Как работает cat мы знаем точно ибо его исходники можно посмотреть. Он читает с stdin и пишет stdout.
А тот эффект который вы наблюдаете (с тем что файл до конца не появляется) с работой cat не связан никак, ибо cat даже файлы не создает. Файл создается перенаправлением вывода в шелле (sh) ровно как и шелл же обеспечивает чтение до EOF и передачу данных на stdin тому самому cat'у - man sh и ищите там "Redirecting Output" и "Here Documents".
при этом:
1. как именно делает шелл - буфферизует весь инпут или отдает его cat'у сразу это его личное дело. Если шелл начнет передавать инпут сразу, то cat сразу начнет писать на stdout и файл появится также сразу.
2. чтобы там внутри не происходило, процесс записи файла в который вывод редиректится все равно всегда одинаковый - open+write+close. Так что даже если шелл все буферизует на входе до EOF то все равное есть шанс сватить контент выходного файла в процессе.
К чему спор? Хотите пользоваться cat+EOF? Так пользуйтесь на здоровье. Вам говорят как считается делать правильным и почему. А пользоваться этим или нет - ваше личное дело.
|
Сообщений: 1573
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
SimakinK: но мы ведь не знаем как точно работает CAT ??
я проверял по описанному мной принципу, двумя консолями в одну вставляю текст, в другой пытаюсь читать этотже файл, его не сущуствует, пробовал вставлять бОльшой объём информации (порядка 1мб), файла не существует до обозначения EOF.
Вы похоже не совсем понимаете, как это работает.
Вы со стандартного устройства ввода печатаете на стандартное устройство вывода. До получения EOF ес-но ничего на диск не пишется, только выводится на экран (stdout).
А вот после прочтения командой cat указанного окончания чтения ввода (необязательно EOF), начинается запись на диск. Если вы думаете, что это все сразу "вставляется" на диск как "штамп" - то ошибаетесь.
P.S. У этого топика сразу и не заметил вторую страницу. Изучаем работу файловых систем ... ))
|
Сообщений: 866
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
cron333,
А вот после прочтения командой cat указанного окончания чтения ввода (необязательно EOF), начинается запись на диск.
на самом деле не совсем так. cat пишет вывод сразу по мере поступления данных, не дожидаясь конца файла. Это легко проверить просто сделав
cat > /tmp/qqq
и набрав что-нибудь и сделав перевод строи. И посмотрев во второй консоли - файл появляется сразу, и получает данные по мере того как нажимается enter.
"буфферизацию" в случае конструкции с EOF (ровно как и саму конструкцию) - делает шелл, не cat.
|
Сообщений: 1573
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
Мы говорим немного о другом - о "встроенном документе".
Цитата:
Встроенный документ (here document) является специальной формой перенаправления ввода/вывода, которая позволяет передать список команд интерактивной программе или команде, например ftp, telnet или ex.
COMMAND <<InputComesFromHERE
...
InputComesFromHERE
Теперь попробуйте сделать тоже самое, только с добавлением EOF:
cat > /tmp/qqq << EOF
и со второй консоли посмотрите ...
dimas:
"буфферизацию" в случае конструкции с EOF (ровно как и саму конструкцию) - делает шелл, не cat.
С этим даже и не спорю ...
P.S. А вообще, я просто хочу сказать, что запись в файл проходит последовательно ...
|
Сообщений: 866
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
Так какая разница. логика работы cat-то от этого не меняется. Меняется то что постыпает ей на инпут и в какой момент. А логика работы cat остается прежней - для каждой строчки прочитанной с инпута _сразуже_ послать ее в output. Все что я написал это что совсем некорректно говорить "А вот после прочтения командой cat указанного окончания чтения ввода" - т.к. этот EOF / KOHEC cat не читает, его читает шелл.
Я подозреваю что шелл внтри создает временный файл после чего просто замыкает его на инпут cat'а.
|
Сообщений: 1573
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
Ну так я это и говорю, применительно к тому, что обсуждаем (режим "встроенного документа") ... ))
dimas: "А вот после прочтения ко
мандой cat указанного окончания чтения ввода" - т.к. этот EOF / KOHEC cat не читает, его читает шелл.
понял, что имеется ввиду. Согласен, выразился не так ... )
По теме:
Сам я в работе (тесты и т.д.) использую копирование (одного) заготовленного файла. Не припомню, что бы были ошибки. А вот на системе, где файлы создаются "пачками" сразу в каталог outgoing - проблемы наблюдал ...
|
Сообщений: 25
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
ПРоблема решилась но не до конца:
Spawn extension (phones, **575, 7) exited non-zero on 'SIP/1202-b6f00468'
-- DAHDI/1-1 answered Local/575@from_TDA600-73d2,2
> Channel Local/575@from_TDA600-73d2,1 was answered.
-- Executing [1111@from_TDA600:1] Set("Local/575@from_TDA600-73d2,1", "CHANNEL(language)=ru") in new stack
-- Executing [1111@from_TDA600:2] MeetMe("Local/575@from_TDA600-73d2,1", "1111|scx") in new stack
== Parsing '/etc/asterisk/meetme.conf': Found
-- Created MeetMe conference 1023 for conference '1111'
-- <Local/575@from_TDA600-73d2,1> Playing 'conf-onlyperson' (language 'ru')
== Spawn extension (from_TDA600, 575, 1) exited non-zero on 'Local/575@from_TDA600-73d2,2'
-- <DAHDI/1-1> Playing 'conf-usermenu' (language 'en')
при входе в конференцию сообщение на русском, вызываю меню "*"
и дальше уже сообщение на анг!
[meetme]
exten => _1111,1,Set(CHANNEL(language)=ru)
exten => _1111,2,Meetme(1111,scx)
варианты?
|
Сообщений: 25
|
Re: язык сообщений Meetme && CALL file && PRI(DAHDI)
Господа подскажите куда копать??
|
|