[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] C rutine til exec + pipe til og fra



On Fri, 21 May 2004 10:34:45 +0200, Hans-Christian Stadler wrote:
>> EBADF: Kan opstå ved en programmeringsfejl, fx hvis man glemmer at tjekke
>> returværdien af open, pipe, dup el. lign., eller hvis man kommer til at
>> close() en fil to gange. Her hjælper det ikke noget at forværre den fejl
>> ved at dø i et uendeligt loop.
> 
> Jo, så opdager man meget hurtigt at man har glemt at
>> tjekke returværdien af open, pipe, dup el. lign.
> eller
>> close() en fil to gange

Hehe, det kan selvfølgelig være et debugging trick, men det er ikke så
pænt at gøre i produktion.

> Kan du vise, at en sådan situation kan opstå i programmet?

Det kan den ikke, og jeg snakker heller ikke så meget om dit konkrete
program, men mere generelt. Din goto-baserede fejlhåndtering er i mine
øjne også skrøbelig. Ikke et ondt ord om goto, men hvis en anden
programmør om et år skal rette i koden, er det nok rimelig sandsynligt
at han ødelægger noget så en fil kan blive close()t to gange under en
eller anden fejlbetingelse. Det kunne måske endda ske for dig selv, hvis
du ikke brugte tid nok på at forstå program flow'et når du vendte
tilbage til koden et par år efter.

Jeg kan godt se at while(close(fd)) ikke er så slem som jeg først
troede, jeg foretrækker bare generelt at kode efter hvad standarden siger
der kan ske, så det også virker på en UNIX platform der ikke findes
endnu.

> Så min holdning er, at en kamikaze løsning er legitimt, da en fejl vil
> være af en charakter, der ikke tillader en systematisk udvej af
> miseren.

Jep, i dette tilfælde. Jeg tænker bare på hvad der sker med koden om et
par år eller måneder. Måske bliver den rettet i og breaker, måske
bliver den compilet på noget andet end Linux, måske bliver den
copy-pastet ind i et andet projekt hvor antagelserne ikke gælder. Måske
rammer en stor meteorit jorden i en nær fremtid :).

Mvh. Jonas



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:43 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *