Het is de eerste keer dat ik een programma wil gaan forken maar ik krijg het niet voor elkaar om het op de juiste manier te doen.
Ik heb op het internet gelezen dat de fork() het programma opsplitst in 2 afzonderlijke programma's(Parent en child) en de child verdergaat waar de fork is aangeroepen. De waardes die voor de fork zijn gegeven aan variabelen, zouden meegegeven worden aan het child-proces(zoals ik had gelezen).
Wanneer ik simpel een fork() toepas na de foutcontrole wordt er echter 2 maal het 'parent-gedeelte' aangeroepen inplaats van 1 keer. Ik heb hieronder mijn uiteindelijke bedeoling neergezet. De bedoeling is dat ik zelf kies met een integer hoevaak ik het programma fork().
De aanroepcode is zeg maar;
"./programma a b c d"
en dan wil ik dus dat elke child een letter afdrukt en de parent de eerste letter a. Ik hoop dat jullie kunnen zien wat ik fout doe want ik snap even niet meer wat ik fout doe. Mischien ben ik er te lang mee bezig
.
Ik heb op het internet gelezen dat de fork() het programma opsplitst in 2 afzonderlijke programma's(Parent en child) en de child verdergaat waar de fork is aangeroepen. De waardes die voor de fork zijn gegeven aan variabelen, zouden meegegeven worden aan het child-proces(zoals ik had gelezen).
Wanneer ik simpel een fork() toepas na de foutcontrole wordt er echter 2 maal het 'parent-gedeelte' aangeroepen inplaats van 1 keer. Ik heb hieronder mijn uiteindelijke bedeoling neergezet. De bedoeling is dat ik zelf kies met een integer hoevaak ik het programma fork().
De aanroepcode is zeg maar;
"./programma a b c d"
en dan wil ik dus dat elke child een letter afdrukt en de parent de eerste letter a. Ik hoop dat jullie kunnen zien wat ik fout doe want ik snap even niet meer wat ik fout doe. Mischien ben ik er te lang mee bezig
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
int main(int iNumArguments, char *apcArguments[])
{
pid_t fork_return;
int iFout, iAantal, iLetter=3;
const int iPid=(int)getpid();
char cDrukaf1;
printf("\nPID before Fork(): %d\n", iPid);
printf("iLetter: %d\n", iLetter);
if(iNumArguments >= 4)
{
printf("Inifloop\n");
do
{
fork_return=fork();
printf("PID after fork %d\n", (int)getpid());
printf("iLetter: %d\n", iLetter);
iLetter++;
}while(iLetter < iNumArguments && iPid==(int)getpid());
}
iFout=TestCall(iNumArguments, apcArguments); //Foutcontrole van aanroep.
if(iFout == No_Errors)
{
sscanf(apcArguments[1], "%d", &iAantal);
switch(fork_return)
{
case -1:
{
printf("Forken heeft gefaalt");
}
case 0:
{
printf("PID child: %d\n\n", getpid());
}
default:
{
printf("PID Parent: %d\n", getpid());
}
} |
[ Voor 23% gewijzigd door Emiel1984 op 09-04-2006 18:20 ]
[LTS][MTS][HTS]