Перечислите все способы, которыми используется блочное устройство

См. мой ответ здесь для получения дополнительной информации о том, как настроить несколько беспроводных сетей. Задержкой, которую Вы видите, является DHCP, потому что нет никакого механизма для инициирования клиента DHCP, когда беспроводное соединение на самом деле устанавливается. Вероятно, просто необходимо сделать ifdown wlan0 и ifup wlan0 когда Вы хотите соединиться.

5
20.09.2013, 19:54
2 ответа

Если Вы можете открыть блочное устройство O_EXCL, это не используется ядром (O_EXCL берет блокировку устройства в данном случае). lsof (/proc сканирующий) должен найти любых других пользователей (VMs мог бы иметь открытое устройство, и часто мог бы не открыться исключительно).

5
27.01.2020, 20:36

+1 для ответа Gabriel - O_EXCL точно решение, которое я использовал в этом сценарии. Вот функция Perl, которую я записал, чтобы проверить, используется ли устройство:

use Fcntl;
use Errno;

sub device_in_use($)
{
  my $device = shift;
  # open with O_EXCL returns EBUSY if a device is in use
  # http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html
  return $!{EBUSY} if (!sysopen my $fh, $device, O_EXCL);
  close $fh;
  return 0;
}

Остерегайтесь, хотя это, это не имеет надлежащей обработки ошибок - это ожидает, что устройство будет существовать и что у Вас есть корневые полномочия.

3
27.01.2020, 20:36

Теги

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