Re: dup ve pipe.
Merhabalar,
Acilkama gercekten uzun olmus ;) Ozet olarak anladigim gereksinim
su:
Programiniz bir baska programi fork()/exec() edip, bu programam
tek yonlu veri aktaracak.
Kolay yontem:
---------------
{
FILE *child_pipe;
char *buffer; /* aktarmak istedigimiz veriyi gosterdigini varsayiyoruz */
child_pipe = popen("chld_process_path [args]", "w");
fwrite(*buffer, sizeof (char), buffer_size, *child_pipe);
fclose(child_pipe);
}
---------------
Biraz daha zor, ama daha esnek yontem (yukaridaki ile ayni isi
yapiyor. bunu gelistirip cift yonlu iletisim saglamak mumkun
popen() ile bu sansiniz yok.).
---------------
{
int pipe[2];
char *buffer; /* aktarmak istedigimiz veriyi gosterdigini varsayiyoruz */
pipe(pipe);
if (fork() == 0) { /* child */
close(0); /* stdin'i kapattik */
dup(pipe[0]); /* pipe'in bir ucu simdi stdin */
execlp("path", "arg0", "arg1", ..., NULL);
} else { /* parent */
write(pipe[1], buffer, buffer_size);
close(pipe[1]);
wait(&child_status);
}
}
---------------
NOT: Yukaridaki program parcalarini test etmedim, hemen
calisacak gibi degiller, ama genel fikri verecegini
umuyorum. Okunakli olmasi icin, sorun cikmasi olasi
noktalarda kontroller yok.
Umarim ise yarar,
--
cagri
Reply to:
- References:
- dup ve pipe.
- From: Halil Demirezen <halild@bilmuh.ege.edu.tr>