Re: Capture console app output into texview?
- From: "Till Harbaum / Lists" <lists harbaum org>
- To: Artur Galjamov <artur-pub yandex ru>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Capture console app output into texview?
- Date: Mon, 23 Nov 2009 21:33:50 +0100
Hi,
thanks a lot for that explanation. I'll try to combine this into the
code from Dov.
Till
Am Samstag 21 November 2009 schrieb Artur Galjamov:
Hi,
After exec(), child clib's startup routine determines buffering mode for
stdout (i.e. calls fdopen(1, "w+")). You can setup pseudo-terminal instead
of pipe, to make child's stdout line-buffered.
optimistic snippet:
=====================================================================
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
int master_fd, slave_fd;
FILE *master_file, *slave_file;
char buf[80], *device;
master_fd = posix_openpt(O_RDWR | O_NOCTTY);
grantpt(master_fd);
unlockpt(master_fd);
slave_fd = open(device = ptsname(master_fd), O_RDWR | O_NOCTTY);
printf("slave device: %s\n", device);
master_file = fdopen(master_fd, "r");
slave_file = fdopen(slave_fd, "w+");
if (fork()) {
fclose(slave_file);
while (fgets(buf, sizeof(buf), master_file))
printf("parent got: %s", buf);
} else {
// child
fclose(master_file);
for (int i = 0; i < 500; i++) {
sleep(1);
fprintf(slave_file, "child's data (%d)\n", i);
}
}
return 0;
}
=====================================================================
21.11.09, 09:39, "Till Harbaum / Lists" <lists harbaum org>:
Hi,
thanks again for that hint. Unfortunately adding
/* switch to line buffered mode */
if(setvbuf(fh, NULL, _IOLBF, 0))
perror("setvbuf(_IOLBF)");
to the program posted by Dov doesn't change anything.
Are there limitations on changing the buffer mode? E.g.
only the transmitter side can do that?
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]