2016-03-31 2 views
0

Есть ли способ закрыть программу/сокет в VxWorks программно? Считаю, что у меня есть устройства /tyco/0, /tyco/1 и /tyco/2 и я хочу закрыть/выключить /tyco/1 и /tyco/2.Закрыть устройство/сокет в VxWorks

Я хотел бы сделать что-то вроде remove("/tyco/1"). Что-то, что помешало бы еще open("/tyco/1") позвонить позже в коде или от внешнего источника от открытия сокета.

ответ

0

Все устройства, доступные для VxWorks, являются частью списка устройств. Список устройств доступен с помощью iosLib.

Я использовал следующий код много, чтобы удалить устройства для генерации ошибки для того, чтобы проверить мои программы:

DEV_HDR *pDevice; 

pDevice = iosDevFind("/xyz", NULL); 
if (pDevice != NULL) 
{ 
    iosDevDelete(pDevice); 
} 

Это работает для всех устройств, перечисленных devs команды, которая в вашем случае также будет работать для "/tyco". Я сомневаюсь, что вы можете запретить открытые вызовы "/tyco/1" и "/tyco/2", но разрешать вызовы "/tyco/0" с использованием этого метода, поскольку он работает на «устройствах».

Если "/tyco/0" - это ваш последовательный интерфейс к оболочке VxWorks, то метод сверху будет работать. Поскольку удаление устройства из списка устройств приведет к сбою всех следующих вызовов open, но не будет закрывать уже открытые устройства ...

+0

Спасибо, что Лукас выглядит именно тем, что я ищу. Один вопрос, если я хочу поместить это в цикл, чтобы закрыть несколько устройств, что бы я сделал с «pDevices»? Установите его на нуль в каждом цикле, освободите его каким-то образом, ...? – atomic928

+0

@ atomic928: 'pDevice' - это просто указатель на запись в списке устройств ядра. Вам не нужно ее освобождать или устанавливать в «NULL». Также вы не должны изменять точки памяти 'pDevice' для ... –

Смежные вопросы