получить IP-адрес автоматически при прямом подключении

Хотя у каждой команды может быть свой собственный буфер записи, нет буфера записи, который был бы общим для команд, даже встроенных -в bash (, или даже двух вызовов одной и той же команды, встроенной -в или нет. ).

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

Так что в этом отношении это будет безопасно. После завершения команды, такой как ваша echo aaaaaaaaaaaaabbbbbbbbbbbbbbbbb, и при условии, что она не разветвляет автоматический процесс, работающий в фоновом режиме, вы можете быть уверены, что все операции ввода-вывода выполнены.

Несколько замечаний. В функции типа:

f() {
  {
    echo x
    return
    echo y
  } > file
  echo something else
}

В оболочке Bourne (и только в оболочке Bourne )это returnпрерывало вывод внутренней группы команд, но не возвращало функцию, как в той древней оболочке, эта группа команд выполнялась в подоболочку из-за перенаправления (, поэтому вы увидитеsomething else).

Это больше не происходит в современных оболочках, таких как bash, но у вас была бы та же проблема в bash, если бы вы написали:

f() {
  (
    echo x
    return
    echo y
  ) > file
  echo something else
}

или

f() {
  {
    echo x
    return
    echo y
  } | tr xy ab
  echo something else
}

Остерегайтесь некоторых случаев, когда некоторые команды не ожидаются. В:

f() {
  {
    echo >(sleep 1; echo x)
    return
  } > file
}
f; cat file

Вы можете обнаружить, что xне отображается, потому что catзапускается до echo x.

Некоторые оболочки (, хотя и не bash), имеют аналогичные потенциальные проблемы с компонентами конвейера, кроме самого правого.

0
17.07.2019, 14:23
1 ответ

Подумав, что dhcp-сервер немного излишен только для создания соединения между двумя устройствами, а также может вызвать проблемы, если Pi снова подключится к сети, в которой уже есть dhcp-сервер, я стал искать другие возможности.

Я обнаружил, что если устройство не может подключиться к DHCP-серверу, интерфейс автоматически получает адрес zeroconf через ~30 сек.

Адрес zeroconf имеет диапазон от 169.254.1.0/16 до 169.254.254.255/16.

Итак, после подключения обоих устройств и небольшого ожидания оба получили адрес и теперь могут общаться.

Бонус :это также создает своего рода запись DNS, поэтому я могу пропинговать свой Pi (имя хоста raspberrypi )с моего компьютера с Windows с адресом «raspberrypi.local».

0
28.01.2020, 03:27

Теги

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