Использование фреда на попен медленное - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть приложение, которое собирает файлы журналов и записывает их в сокет (аналогично тому, как пользователь загружает файлы через веб-браузер).

Ниже приведена основная логика, которая делает это.

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.Эта информация записывается в сокет.

Я могу добиться функциональности.Но операция чтения кажется очень медленной.

Для завершения этого процесса загрузка файла размером 9 МБ занимает около ~ 20 минут.

Я запутался в том, что вызывает такую ​​большую задержку.

...