在C中转换FILE类型和filedescriptor

时间:2014-11-14 12:50:02

标签: c file fseek

LANG:C \ OS:Linux

我正在编写一个流媒体程序,我已经实现了Play,停止和暂停功能,当我来实现搜索时,我遇到了以下问题而且卡住了。

要在流式传输之前打开文件,我使用以下方法:

int transport_fd = open(tsfile, O_RDONLY);
if(transport_fd < 0) 
                {
                    fprintf(stderr, "can't open file %s\n", tsfile);
                    close(sockfdstr); // using this to stream 
                }
// .....
//.....
len = read(transport_fd, send_buf, packet_size); // here, the read function takes fd as a first argument.

要使用 fseek()函数,我应该将 FILE 类型的指针作为打开的文件传入,即通过文件指针指向已经打开的流,那么我应该如何处理呢?

示例虚拟代码:

FILE *fp;
{CODE TO CONVERT BETWEEN *fp AND tsfd - OR ANY OTHER FIX TO THIS SITUATION}
tsfd = fseek(fp, offset, SEEK_CUR);
len = read(tsfd, send_buf, packet_size);

1 个答案:

答案 0 :(得分:1)

我认为您可以将lseek功能用于您的目的。 你已经使用open和read而不是fopen和fread,只需使用lseek而不是fseek。