Запись на FIFO с несколькими процессами

Вы пытались применить рецепт для Ubuntu под Debian. Обычно это работает, но в данном конкретном случае - нет.

Ubuntu является производным от Debian и не сильно отличается от программы установки и графического интерфейса. Команда locale-gen - одна из тех немногих вещей, которые она меняет. Не знаю почему.

В Debian команда locale-gen не принимает аргументов и восстанавливает скомпилированные определения локали в соответствии с настроенным списком локалей. Чтобы изменить выбор языковых стандартов, которые вы хотите использовать, отредактируйте файл /etc/locale.gen , затем выполните команду locale-gen . Либо запустите dpkg-reconfigure locales от имени пользователя root, выберите дополнительные языковые стандарты, которые вам нужны (и отмените выбор тех, которые вам не нужны), и нажмите OK.

В Ubuntu, если вы запускаете команду locale-gen без аргументов, она восстанавливает скомпилированные определения локали в соответствии с настроенным списком локалей. Но если вы передадите некоторые аргументы, они добавятся в список и сразу же сгенерируются. Список локалей хранится в /var/lib/locales/supported.d/local . Запуск dpkg-reconfigure locales просто восстанавливает скомпилированные локали, не давая вам возможности изменить выбор.

Таким образом, чтобы добавить en_US.UTF-8 в список используемых локалей:

  • Debian, интерактивный: dpkg-reconfigure locales
  • Debian, автоматически: sed -i 's / ^ # * \ (en_US.UTF-8 \) / \ 1 /' /etc/locale.gen && locale-gen
  • Ubuntu, автоматически: locale-gen en_US.UTF-8
3
30.06.2018, 09:58
2 ответа

Используйте что-то вроде semиз GNU Parallel:

mkfifo myfifo

sem --id myid 'seq 1 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 2 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 3 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 4 10; sleep 1; echo done' > myfifo &

cat myfifo
1
27.01.2020, 21:18

Вот быстрый тест, который я провел:

mkfifo foo
yes "Process 1 reporting" > foo & yes "This is process 2" > foo &
awk '!a[$0]++' < foo

И вывод, который я получил от awk:

Process 1 reporting
Process 1 reportThis is process 2
This is process 2
This is pring
Process 1 reportocess 2
ing
ocess 2
This is prProcess 1 reporting
4
27.01.2020, 21:18

Теги

Похожие вопросы