2016-10-03 210 views
-1

我使用一個驅動程序有很多文件,每個文件我有一個ID,當我打開這些文件時,我將文件描述符存儲在包含具有文件描述符的ID的strcut數組中打開的文件可以阻止或不阻止。用文件描述符打開讀文件

我想從另一個程序或程序中的其他函數中讀取文件,當我嘗試使用它的文件描述符讀取阻塞文件時,它不會阻塞,直到我寫入文件,它纔會返回no數據在緩衝區中,但是當我在相同的函數中使用它時,它仍然阻塞。

問題在哪裏?

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是結構和聲明爲extern

在其他功能我閱讀

read_size = read(vg_bufObj[indice].dev_fd, data, 8); 

文件當protocolType指定_BLOC文件被打開阻塞,但是當我從閱讀另一個函數返回空數據,讀取大小返回變量的最大值。

+4

粘貼你的代碼 - 沒有它,很難幫助 – Gravell

+0

的代碼只是一個簡單的打開和閱讀,它是下面 – djidji

回答

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是結構和聲明爲extern

在其他功能我閱讀

read_size = read(vg_bufObj[indice].dev_fd, data, 8); 

文件當protocolType指定_BLOC文件被打開阻塞,但是當我從閱讀另一個函數返回空數據,讀取大小返回變量的最大值。