Using fread on popen is slow
I have an application that collects the logs files and writes on the socket(Similar to the user downloading the files via the Web browser).
Below is the core logic that does this.
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;
The script.sh takes care of collecting the logs and preparing a tar of
the files.
Using the fread to read the info from popen. This information is written to the socket.
I am able to achieve the functionality. But the read operation seems to be very slow.
For the completion of this process, It takes approx ~20Mins to download a 9MB file.
Am confused as what is causing so much of delay.
c popen fread
add a comment |
I have an application that collects the logs files and writes on the socket(Similar to the user downloading the files via the Web browser).
Below is the core logic that does this.
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;
The script.sh takes care of collecting the logs and preparing a tar of
the files.
Using the fread to read the info from popen. This information is written to the socket.
I am able to achieve the functionality. But the read operation seems to be very slow.
For the completion of this process, It takes approx ~20Mins to download a 9MB file.
Am confused as what is causing so much of delay.
c popen fread
3
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:size_to_send > 0
is used as condition butsize_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).
– Scheff
Nov 12 '18 at 14:21
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43
add a comment |
I have an application that collects the logs files and writes on the socket(Similar to the user downloading the files via the Web browser).
Below is the core logic that does this.
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;
The script.sh takes care of collecting the logs and preparing a tar of
the files.
Using the fread to read the info from popen. This information is written to the socket.
I am able to achieve the functionality. But the read operation seems to be very slow.
For the completion of this process, It takes approx ~20Mins to download a 9MB file.
Am confused as what is causing so much of delay.
c popen fread
I have an application that collects the logs files and writes on the socket(Similar to the user downloading the files via the Web browser).
Below is the core logic that does this.
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;
The script.sh takes care of collecting the logs and preparing a tar of
the files.
Using the fread to read the info from popen. This information is written to the socket.
I am able to achieve the functionality. But the read operation seems to be very slow.
For the completion of this process, It takes approx ~20Mins to download a 9MB file.
Am confused as what is causing so much of delay.
c popen fread
c popen fread
edited Nov 13 '18 at 5:57
Kniwx
asked Nov 12 '18 at 13:49
KniwxKniwx
344
344
3
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:size_to_send > 0
is used as condition butsize_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).
– Scheff
Nov 12 '18 at 14:21
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43
add a comment |
3
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:size_to_send > 0
is used as condition butsize_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).
– Scheff
Nov 12 '18 at 14:21
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43
3
3
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:
size_to_send > 0
is used as condition but size_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).– Scheff
Nov 12 '18 at 14:21
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:
size_to_send > 0
is used as condition but size_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).– Scheff
Nov 12 '18 at 14:21
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53263569%2fusing-fread-on-popen-is-slow%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53263569%2fusing-fread-on-popen-is-slow%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
May I suggest you do some rubber duck debugging? Then perhaps you could find a flaw with the inner loop. And if what you're showing is just pseudo-code, then please try to create a Minimal, Complete, and Verifiable Example to show us. And of course read about how to ask good questions, as well as this question checklist.
– Some programmer dude
Nov 12 '18 at 13:52
Following the advice of @Someprogrammerdude, I looked at the inner loop a bit closer:
size_to_send > 0
is used as condition butsize_to_send
is never updated inside this loop. It takes approx ~20Mins to download a 9MB file. I still don't understand why the inner loop may terminate at all (but gave up for now).– Scheff
Nov 12 '18 at 14:21
@Scheff That was typo error. Have edited the pseudo-code.
– Kniwx
Nov 13 '18 at 5:58
The issue is not with the above code. It was the script that got invoked from popen that was causing the issue.
– Kniwx
Nov 14 '18 at 17:43