/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
pthreads og system() problemer...
Fra : holst


Dato : 23-06-03 16:28

Hej NG!

Jeg sidder i Linux og er ved at lave et program der kører i flere tråde
(vha. pthread) og skal kalde nogle system kald (vha. system()). Hvis jeg
kalder system("mkdir directory") fra min "main-tråd" så virker alt som
det skal. Laver jeg derimod en ny tråd i min main vha. pthread, og jeg
prøver at lave system kaldet fra den nye tråd, så virker programmet
pludselig ikke - programmet terminerer bare alt for tidligt uden advarsler eller
fejl. Er der nogen der kan forklare mig hvorfor? -og hvordan kan jeg
løse problemet?

På forhånd tak

mvh
Allan Eriksen

 
 
Bo Lorentsen (23-06-2003)
Kommentar
Fra : Bo Lorentsen


Dato : 23-06-03 15:45

holst wrote:
> Hej NG!
>
> Jeg sidder i Linux og er ved at lave et program der kører i flere tråde
> (vha. pthread) og skal kalde nogle system kald (vha. system()). Hvis jeg
> kalder system("mkdir directory") fra min "main-tråd" så virker alt som
> det skal. Laver jeg derimod en ny tråd i min main vha. pthread, og jeg
> prøver at lave system kaldet fra den nye tråd, så virker programmet
> pludselig ikke - programmet terminerer bare alt for tidligt uden advarsler eller
> fejl. Er der nogen der kan forklare mig hvorfor? -og hvordan kan jeg
> løse problemet?
Måske kan jeg hjælpe, men ikke opmundre

Af det jeg kan huske ender en "system" nede i en "fork", og fork og
threads er ikke just gode venner. Du kan evt. kikke på "pthread_atfork",
men det er nok ikke at anbefale.

Jeg ved ikke om man kan starte en tråd der direkte kører en exec, men
det kræver lige lidt nærlæsning, og det kan måske ende med at blive lidt
linux nært kode, fordi man i linux opfatter en tråd og en process som
det samme på nær et delte data segment.

Gav det lidt svar ?

/BL


Peter (24-06-2003)
Kommentar
Fra : Peter


Dato : 24-06-03 09:46

holst wrote:

> Hej NG!
>
> Jeg sidder i Linux og er ved at lave et program der kører i flere tråde
> (vha. pthread) og skal kalde nogle system kald (vha. system()). Hvis jeg
> kalder system("mkdir directory") fra min "main-tråd" så virker alt som
> det skal. Laver jeg derimod en ny tråd i min main vha. pthread, og jeg
> prøver at lave system kaldet fra den nye tråd, så virker programmet
> pludselig ikke - programmet terminerer bare alt for tidligt uden advarsler
> eller fejl. Er der nogen der kan forklare mig hvorfor? -og hvordan kan jeg
> løse problemet?
>
> På forhånd tak
>
> mvh
> Allan Eriksen

Der burde ikke være nogen problemer med at kalde system() fra andre tråde.
Jeg vil gætte på, at du har glemt at fortælle gcc, at den skal generere
reentrant kode. Hvis du oversætter med:
gcc -D_REENTRANT -D_PTHREADS foobar.c
burde det virke.

/Peter

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste