Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

RURA

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: RURA

Autor: ondra.holub

20:20:57 21.03.2009

Je potřeba před forkem udělat ještě jednu trubku. Do jejího vstupu napojit výstup z forkovaného procesu (tedy to, co vypisuje tr na stdout).

Může tam pak být ještě problém s bufferováním, takže je potřeba si dát pozor, aby oba procesy nečekaly, až budou mít na vstupu dostatek dat. Aspoň jeden by to měl pravidelně flushovat.

Citovat příspěvek

 

RURA

Autor: PETERP

13:41:32 21.03.2009

Zdravim nevi nekdo z vas ako by som upravil tenhle program...Nacitavan subor ktory zapisujem do roury a nasledne konvertujem na velke pismena..ale nechci aby po vykonani execlp mi to vypsalo na konzolu ale aby som to mal v roure. bo chci ten upraveny vystup ulozit do pola a nasledne este upravovat.



#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
int pajpa[2];
int i;
char c;
int status;
int subor1;
struct stat info;
int velkost;
subor1=open("ahoj.txt", O_RDONLY);
lstat("ahoj.txt",&info);
velkost = info.st_size;
char pole[velkost];
status=pipe(pajpa);
read(subor1,pole,velkost);
pole[velkost]='\0';


if(status==-1)
{
write(2,"Nepodarilo sa vytvorit pajpu\n",29);
exit(1);
}

switch(fork())
{
case 0:
close(pajpa[0]);
dup2(pajpa[1],STDOUT_FILENO);
write(pajpa[1],pole,velkost);

break;
default:
{
close(pajpa[1]);
dup2(pajpa[0],STDIN_FILENO);
execlp("tr","tr", "[:lower:]","[:upper:]",NULL);

}
}
return 0;
}

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: