Hallo,
Ik ben bezig met het proggen van een eigen shelletje.
Maar nou heb ik nogal een probleem waar ik niet uit kom.
Die commandline constructor krijgt bijvoorbeeld "a;b|c;d" mee.
Als ik die aanroep : pipes[count] = new Pipeline(pipe); weglaat geeft hij mooi
3 regels weer gesplitst bij de ; . Ook als ik alle strtok in Pipeline weglaat doet hij het ook goed, maar zodra die in pipeline gaat splitsen op | (ook al zijn die er niet)
dan maakt hij maar 1 nieuwe pipeline aan en stopt.
Commandline.cc
Pipeline.cc
Uitvoer als commandline a;b;c binnen krijgt.
Nu uitvoer als ik de strtok en while loop in pipeline weghaal
Gewoon wel goed.
Het lijkt wel dat door die strtok in pipeline de pipe variable in commandline veranderd, maar dat lijkt mij helemaal niet te kunnen. Ben al de hele dag bezig maar kan de fout niet vinden hopelijk snappen jullie wat ik fout doe
.
Alvast bedankt.
Ik ben bezig met het proggen van een eigen shelletje.
Maar nou heb ik nogal een probleem waar ik niet uit kom.
Die commandline constructor krijgt bijvoorbeeld "a;b|c;d" mee.
Als ik die aanroep : pipes[count] = new Pipeline(pipe); weglaat geeft hij mooi
3 regels weer gesplitst bij de ; . Ook als ik alle strtok in Pipeline weglaat doet hij het ook goed, maar zodra die in pipeline gaat splitsen op | (ook al zijn die er niet)
dan maakt hij maar 1 nieuwe pipeline aan en stopt.
Commandline.cc
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Commandline::Commandline(char * _cmdline){
char *cmdline = _cmdline;
cout << "cmdline: "<<cmdline<<endl;
char *pipe;
pipe= strtok(cmdline, ";");
int count = 0;
while(pipe != NULL){
pipes[count] = new Pipeline(pipe);
cout << "aangemaakt"<<endl;
pipe = strtok(NULL, ";");
count ++;
}
} |
Pipeline.cc
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| Pipeline::Pipeline(char * _pipe){
pipe=_pipe;
char *p;
cout << "new pipeline" <<endl;
p= strtok(pipe, "|");
int count = 0;
while(p != NULL){
cout << p <<endl;
p = strtok(NULL, "|");
count ++;
}
} |
Uitvoer als commandline a;b;c binnen krijgt.
code:
1
2
3
4
5
| /pub/school/s2 - $>a;b;c cmdline: a;b;c new pipeline a aangemaakt |
Nu uitvoer als ik de strtok en while loop in pipeline weghaal
code:
1
2
3
4
5
6
7
8
| /pub/school/s2 - $>a;b;c cmdline: a;b;c new pipeline aangemaakt new pipeline aangemaakt new pipeline aangemaakt |
Gewoon wel goed.
Het lijkt wel dat door die strtok in pipeline de pipe variable in commandline veranderd, maar dat lijkt mij helemaal niet te kunnen. Ben al de hele dag bezig maar kan de fout niet vinden hopelijk snappen jullie wat ik fout doe
Alvast bedankt.