【发布时间】:2012-11-09 18:59:26
【问题描述】:
例如,我在一个设备数组中打开了 2 个设备..
节点是 /dev/ttyUSB0、/dev/ttyUSB1 等。
#define MAXDEV 4
devlist[MAXDEV];
const char *devices[] = {"/dev/ttyUSB0","/dev/ttyUSB1");
for(loop =0; loop<sizeof(devices); loop++){
fd= open(devices[loop]);
}
现在我将它们添加到 fds 列表中;
for(i=0; i<MAXDEV; i++){
if(devlist[i] != 0){
devlist[i] = fd;
fd = -1;
}
}
现在我在设备上读取数据。
for(iter=0; iter<MAXDEV; iter++){
if(FD_ISSET(devlist[iter],&fds)){
if ((nbytes = read(devlist[iter], buf, sizeof(buf)-1)) > 0 && nbytes != 0)
{
buf[nbytes] = '\0';
printf("Data Received on Node ???");
}
if(nbytes < 0){
printf("connection reset\n");
FD_CLR(devlist[iter], &fds);
close(devlist[iter]);
devlist[iter] = 0;
}
if(nbytes ==0){
printf("Device Removed on Node ???\n");
FD_CLR(devlist[iter], &fds);
close(devlist[iter]);
devlist[iter] = 0;
}
}
}
现在如何使用它的 fd 获取设备节点?...谢谢。
【问题讨论】:
-
什么叫设备节点?你到底想得到什么,你有一个例子吗?
-
您在寻找
fstat(2)返回的设备ID吗? -
好吧,因为你不会知道删除了什么设备,所以我打算使用 fd 来获取设备节点。设备节点是插入设备的端口。例如。 /dev/ttyUSB0、/dev/ttyUSB1 等等。