Nåväl, sitter här med en uppgift som jag inte får helt kläm på.
Jag ska skriva ett program som skapar en fork. Huvudprocessen ska läsa in en textsträng skriva den till en pipe som läses av "barnet" som sedan ska skriva ut den på skärmen...
Programmet fungerar men inte helt...
Efter man matat in första strängen skriver programmet ut den precis som den ska. Programmet ska sdå kriva ut "Skriv en sträng: " igen och vänta på ny inmatning. Detta händer inte, istället hoppar den helt enkelt över allting och bara står och väntar på en ny inmatning tills jag matat in en ny sträng. Då skriver den ut "Skriv en sträng: " igen samtidigt som den skriver ut den ny strängen precis som den ska. Den står också och väntar på inmatning precis efter den nyss utskrivna strängen.
Hoppas jag öht gör mig förstådd.
Här är koden för det jag skrivit.
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include "vt200.h"
int main()
{
int fd[2],pid,n;
char buf[100],str[100];
pipe(fd);
pid = fork();
CLRSCR;
if (pid1 == -1)
{
printf("Error creating fork, Exiting!");
exit(EXIT_FAILURE);
}
else if(pid == 0)
{
while(1)
{
n = read(fd[0],buf,sizeof(buf));
POS(21,20);
printf("Du skrev: %s", buf);
fflush(stdout);
}
}
else
{
while(1)
{
POS(20,20);
printf("Skriv en sträng: ");
if (scanf("%s",&str) != EOF)
{
fflush(stdout);
n = write(fd[1],str,sizeof(str));
}
else
{
kill(pid,SIGTERM);
exit(EXIT_SUCCESS);
}
}
}
return 0;
}