Пользователь ilkkachu дал хорошее объяснение того, как буферизация влияет на вывод. Мой ответ описывает, что произойдет, если вы устраните буферизацию, например. заменив вызовы fprintf
вызовами write
. В этом случае вы получите строго чередующиеся a
s и b
s. Это связано с тем, что вызов write
вызывает перепланирование :записи в блоки одного процесса, передачу очереди другому процессу и т.д.
Давайте представим, что произойдет, если вызов записи будет не блокироваться. Тогда мы должны были бы рассмотреть шкалы времени :, вы получили бы гораздо более длинные прогоны a
с и b
с, чем просто один или два за раз, потому что современные процессоры способны выполнять миллиарды инструкций в секунду, но частота планирования обычно составляет от 100 Гц до 1000 Гц. Процесс сможет выполнить до десятков миллионов инструкций, прежде чем он будет вытеснен, а другой процесс будет запланирован для запуска. Даже принимая во внимание накладные расходы системных вызовов, это дало бы процессу время для печати очень длинных строк последовательных a
с или b
с.
Не требуется. Формат CIDR(10.0.2.15/24
)содержит сетевую маску, из которой можно вычислить номер сети и широковещательный адрес с предоставленным IP-адресом.
У вас тут несколько неправильных представлений. Любые команды в .bashrc
выполняются каждый раз, когда вы запускаете новую интерактивную оболочку без входа -. Это означает, что каждый раз, когда вы открываете новый терминал, они будут запускаться снова. Каждый раз, когда вы запускаете bash
, они будут запускаться снова.
Следующая проблема заключается в том, что если вы не настроили свой sudo
на выполнение без пароля, ваша команда даже не запустится. Он просто зависнет в ожидании пароля. Вам вообще нужно sudo
? Разве pi
не ваше собственное имя пользователя? Все команды в вашем .bashrc
будут выполняться от имени вашего пользователя, вам не нужно для них вызывать sudo
.
Наконец, запуск терминала не имеет значения. Команда не будет запущена в этом терминале, терминал просто останется там.
Вам нужно добавить эту команду в /etc/crontab
и настроить ее на запуск от имени пользователя pi
при перезагрузке. Запустите sudo nano /etc/crontab
и добавьте эту строку в файл:
@reboot pi python3 /path/to/script.py
Это скажет вашей системе запускать команду python3 /path/to/script.py
от имени пользователя pi
при каждой перезагрузке.