From: Axel Belinfante <Axel.Belinfante@cs.utwente.nl>
To: 9fans@cse.psu.edu
Subject: [9fans] trying to understand how fork/pipe a filtering program
Date: Thu, 31 Aug 2006 00:46:11 +0200 [thread overview]
Message-ID: <200608302246.k7UMkCd13963@demeter.cs.utwente.nl> (raw)
after the suggestion of resample(1) some days ago
I've tried run it as a filter from another program.
this other program is non-threaded; for testing all
it does is call initdraw and read an image file
after which the resample routine is called.
in my resample routine it seems I need a call to sleep
to avoid the resample program to hang (in Pread).
(replacing the sleep by a fprint(2, "something\n") works too).
I'm just trying to understand what goes on -
is this the way to do this? if not, what am I missing?
I'm sorry if it is something obvious; I'm just trying to learn.
Axel.
Image*
resample(Image *from)
{
int p[2];
Image *img;
if(pipe(p) < 0){
fprint(2, "pipe fails: %r\n");
exits("Epipe");
}
switch(fork()){
case -1:
fprint(2, "fork fails: %r\n");
exits("Efork");
default:
if (writeimage(p[0], from, 0) < 0)
fprint(2, "error writeimage\n");
close(p[0]);
/* seems we need sleep to give up cpu so resample can run */
sleep(1);
img = readimage(display, p[1], 0);
close(p[1]);
waitpid();
return img;
case 0:
dup(p[1], 0);
dup(p[0], 1);
execl("/bin/resample", "resample", "-x50%", nil);
fprint(2, "execl fails: %r\n");
exits("Eexec");
}
return nil;
}
next reply other threads:[~2006-08-30 22:46 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-30 22:46 Axel Belinfante [this message]
2006-08-30 23:05 ` geoff
2006-08-31 16:26 ` "Nils O. Selåsdal"
2006-08-31 19:55 ` Axel Belinfante
2006-08-31 20:15 ` rog
2006-08-31 20:24 ` Axel Belinfante
2006-08-31 20:24 ` rog
2006-08-31 20:45 ` Axel Belinfante
2006-09-01 3:43 ` geoff
2006-09-01 10:57 ` rog
2006-09-01 14:35 ` rog
2006-09-01 15:33 ` Skip Tavakkolian
2006-09-01 15:59 ` rog
2006-09-01 18:42 ` Skip Tavakkolian
2006-09-03 19:09 ` Axel Belinfante
2006-09-04 14:52 ` Gorka guardiola
2006-09-04 20:50 ` Gorka guardiola
2006-09-04 19:26 ` Skip Tavakkolian
2006-09-04 20:25 ` Francisco J Ballesteros
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200608302246.k7UMkCd13963@demeter.cs.utwente.nl \
--to=axel.belinfante@cs.utwente.nl \
--cc=9fans@cse.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).