打开带文件描述符

时间:2016-10-03 11:49:46

标签: c linux file posix file-descriptor

我使用的驱动程序有很多文件,每个文件我都有一个ID,当我打开这些文件时我将文件描述符存储在strcut数组中,其中包含带有文件描述符的ID,每个打开的文件都可以阻塞或者不

我想从另一个程序或程序中的其他函数读取文件,当我尝试读取带有文件描述符的阻塞文件时,在我写入它之前它仍然没有阻塞,它没有返回任何数据在缓冲区中,但是当我在同一个函数中使用它时它仍然阻塞。

问题出在哪里?

if (vg_bufObj[indice].protocolType == _NO_BLOC) 
vg_bufObj[indice].dev_fd = open(d_path, O_RDONLY | O_NONBLOCK);
else
vg_bufObj[indice].dev_fd = open(d_path, O_RDONLY);

vg_bufObj是struct并声明为extern

在其他功能中我用

读取文件
read_size = read(vg_bufObj[indice].dev_fd, data, 8);

当protocolType被指定_BLOC时,文件被打开阻塞,但当我从另一个函数读取它时,它返回空数据,读取大小返回变量的最大值。

1 个答案:

答案 0 :(得分:0)

if (vg_bufObj[indice].protocolType == _NO_BLOC) 
vg_bufObj[indice].dev_fd = open(d_path, O_RDONLY | O_NONBLOCK);
else
vg_bufObj[indice].dev_fd = open(d_path, O_RDONLY);

vg_bufObj是struct并声明为extern

在其他功能中我用

读取文件
read_size = read(vg_bufObj[indice].dev_fd, data, 8);

当protocolType被指定_BLOC时,文件被打开阻塞,但当我从另一个函数读取它时,它返回空数据,读取大小返回变量的最大值。