• 13 406 online
  • 1 198 283 medlemmar
  • 62 078 900 inlägg
2018-10-19, 10:13
  #3085
Medlem
Citat:
Ursprungligen postat av ArthurDayne
Hallåj, jag har gjort ett shell som ska kunna tolka kommandon och även pipes och redirects. Det funkar just nu felfritt men funktionen där själva exekveringen händer tycker jag är för lång så jag tog ut en del av den och gjorde en ny funktion och blev förvånad av att programmet helt plötsligt slutade fungera, det går att starta men när jag skriver in ett kommando jag vill köra så händer ingenting, det är som att execvp()(som bland annat kördes i den delen som jag delade upp) aldrig körs. Eftersom den är ganska lång så vill jag bara visa den releventa funktionen, jag tänker mig att det kanske är lätt fel som jag missat.

Här är original funktionen det är på rad 115 som jag tog ett stycke som ni ser i nästa länk https://pastebin.com/pzJtHVjh

Och här är den nya som är uppdelad i två delar, på rad 150 kallas den nya funktionen lastFork https://pastebin.com/YJJ1rrUh

Som ni ser så kallar jag fork() och sedan i barnet så kallar jag funktionen som innehåller exakt samma kod som i den förra men av någon anledning så är det som att execvp() aldrig händer! Är det något jag missupfattat? typ att exec-funktionerna inte kan kallas på andra ställen eller något.

I din utbrutna funktion har du wrappat hela innehållet i
Kod:
 if(nCommands == 1 &&  comLine[0].infile != NULL) 

Så är det inte i orginal-filen, där används den if-satsen bara för första if-statmentet.
Citera