Portál AbcLinuxu, 19. listopadu 2025 05:18
Za ukol je napsat jednoduchy shell, ktery umi rouru a presmerovani do souboru.
S tema rourama uz to bez problemu slape, vsechno se zavira (eventuelne ceka) na spravny okamzik a podobne.
Myslel jsem si, ze rozsireni o vystup do souboru nebude nijak slozity. Proste misto pipy otevru soubor a bude to.
Nejak tahle :
if (data[i-1].smeruj==2) {
// smeruj to do souboru
fd[i-1][1] = open(data[i].command, O_CREAT | O_WRONLY );
}
else {
pipe (fd[i-1]);
}
...
Ale neni to to prave. Bud to tak jednoduse nejde, nebo delam nekde chybu nebo fakt nevim...
Dik za vhodne popichnuti
Filip
int
main(void)
{
int fd;
fd = open("stdout", O_CREAT | O_WRONLY);
if (fork()) {
dup2(fd, 1);
execl("/bin/ls", "ls", NULL);
}
else
puts("Ble ble");
return 0;
}
tak si to přeber. V tvém kódu mi tedy přijde podezřelé, že se výstupní soubor jmenuje data[i].command, ale to může být jen divné jméno proměnné.
execl volá v procesu rodiče. Spíš by tam asi mělo být if (!fork())
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.