Avatar billede Lasse Novice
02. januar 2001 - 16:08 Der er 9 kommentarer og
1 løsning

system kald

Jeg har et problem. Jeg laver først ét systemkald og bagefter endnu et. Man det andet kald bruger det første. DVS at jeg starter et program i det første. I det andet bruger jeg det program til noget.

Men som jeg ser det, eksekverer Perl det som en child process. Af en eller anden mærkelig grund starter den på den første, og fortsætter derefter med den anden - FØR den første er blevet færdig. Det gør at jeg ikke kan bruge det.

Er der nogen der ved hvordan man venter med at lave noget efter en child process er færdig(lavet med system kald)??? 400 point... også skal det gå hurtigt, da jeg skal bruge det ASAP
Avatar billede Lasse Novice
02. januar 2001 - 16:10 #1
mere specifikt er at jeg i det første starter en mysqldæmon, og i den anden eksekverer mysql klienten
Avatar billede kasseper Nybegynder
02. januar 2001 - 16:12 #2
lav det med semaforer....Forklaring :
sæt et flag når den første process/tråd er færdig(dit systemkald #1)
tjeck inden den anden process/tråd startes om flaget er sat(dit systemkald #2)
Avatar billede Lasse Novice
02. januar 2001 - 16:13 #3
hvordan ser jeg om et system kald er færdigt????
Avatar billede kasseper Nybegynder
02. januar 2001 - 16:21 #4
Generelt er det sådan ( og sådan er jeg nød til at sige, da jeg ikke ved noget om perl ) at et system kald er færdigt når kontrollen overdrages til brugeren igen. MEDMINDRE, at system kaldet starter en proces/tråd, OG det gør den jo i det her tilfælde. Den starter din dæmon.
Altså er du nød til at sjusse dig lidt frem til hvornår din dæmon er så langt at du kan starte din klient. Du må kalde Sleep ( eller et andet systemkald, der sætter din proces/tråd til at sove i et af dig defineret antal millisek. ) inden du starter klienten.
Husk på at når et system kald som har startet en tråd eller en anden proces, så er det ikke muligt at sige hvornår denne proces/tråd terminere......

Håber du kan bruge det til noget,
og hermed vil jeg give ordet til perl-eksperterne.....

Kasseper
Avatar billede Lasse Novice
02. januar 2001 - 16:39 #5
det behøves ikke... da svaret var fuldt tilfredsstillende... jeg takker og du får point...
Avatar billede erikjacobsen Ekspert
02. januar 2001 - 19:22 #6
I stedet for at sjusse kan man jo bare kalde sin connect i en løkke (evt
med en sleep i) indtil den går godt, for så må dæmonen være vækket
og i kampklar stand.
Avatar billede kasseper Nybegynder
02. januar 2001 - 19:33 #7
Ja ericjacobsen, men hvis man som jeg ikke har tjeck på hvilken tilstand der skal være sat når dæmonen er klar. Så må en sjus vist være eneste mulighed. MEN det er selvfølgelig din version der burde bruges, da man måske sjusser lidt for meget og dermed spiller \'kostbar\' CPU tid, på nul og nix
Avatar billede kasseper Nybegynder
02. januar 2001 - 19:33 #8
ups ikke noget med at spille kostbar her.....;) spilder selvfølgelig....
Avatar billede erikjacobsen Ekspert
02. januar 2001 - 19:53 #9
Jeg gætter nu på at at dæmonen er klar når mysql_connect ikke giver en
fejl - hvilket kan testes på i både Perl og PHP. Med en passende tid for sleep
spilder man ikke ret meget tid.
Avatar billede kasseper Nybegynder
03. januar 2001 - 08:46 #10
OK, men jeg vil nu sige at al spildt tid i en CPU er kostbart....
Over and out ---->
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester