Действительно ли безопасно передать stdout по каналу к B параллельно

Я не думаю, что это возможно. Это - Цель Брелока для ключей Gnome хотя:

Устройство хранения данных ключей и сертификатов на съемных носителях

Создайте модуль PKCS#11, который позволяет устройство хранения данных ключей, сертификатов и паролей на съемных носителях. Это может использоваться в качестве смарт-карты бедного человека, или для мобильности.

  • Задача: Еще реализованный.

6
20.09.2017, 14:10
3 ответа

Единственная ситуация, в которой это безопасно , а не , это если A или B пишут на ресурс, который жестко закодирован в программе (например, /etc/passwd).

Но для подавляющего большинства программ это , а не . Поэтому параллельный запуск их будет безопасен.

1
27.01.2020, 20:23

Пока каждый экземпляр B записывает в разные файлы, все будет в порядке. Однако, безопасность такого подхода в конечном счете зависит от B.

Например, в прошлом меня укусали плохо закодированные программы, когда я пытался сделать что-то похожее на ваше решение. В моем случае программа использовала srand(time(NULL)), а затем записала во временный файл rand()-основанный на . Это произошло ужасно, когда одновременно было запущено 10 экземпляров программы, так как все они записывались в один и тот же временный файл.

До тех пор, пока ваша программа не содержит такой ошибки и не пишет по определенному фиксированному пути, вы должны быть в порядке.

2
27.01.2020, 20:23

Будет ли при параллельном выполнении stdout из разных программ беспорядок?

Нет, если все они являются независимыми процессами, записывающими в отдельные файлы, какими они кажутся -- каждый экземпляр B отличается, и выводит на свое место.

9
27.01.2020, 20:23

Теги

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