首页 > 解决方案 > 在 popen 上使用 fread 很慢

问题描述

我有一个收集日志文件并在套接字上写入的应用程序(类似于用户通过 Web 浏览器下载文件)。

以下是执行此操作的核心逻辑。

FILE *fp = NULL;
char au1Data[1500];

fp = popen("script.sh", "r");

while ((i4Count = fread(au1Data, 1, sizeof(au1Data), fp)) > 0)
{

    for (size_to_send = i4Count; size_to_send > 0; )
    {
        sent = write(web_socket_fd,au1Data,i4Count);
        size_to_send -= sent;
    }

} 

script.sh 负责收集日志并准备文件的 tar。

使用 fread 从 popen 读取信息。此信息被写入套接字。

我能够实现该功能。但是读取操作似乎很慢。

为了完成这个过程,下载一个 9MB 的文件大约需要 20 分钟。

我很困惑是什么导致了如此多的延迟。

标签: cpopenfread

解决方案


推荐阅读