У меня есть приложение, которое собирает файлы журналов и записывает их в сокет (аналогично тому, как пользователь загружает файлы через веб-браузер).
Ниже приведена основная логика, которая делает это.
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 минут.
Я запутался в том, что вызывает такую большую задержку.