![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Højtstående Programmering Post spørgsmål om C, C + +, Java, SQL, og andre programmerings sprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| helvede & matematik | ogoy | Shell Programmering og Scripting | 5 | 05-26-2008 11:58 PM |
| helvede og SQLite | ogoy | Shell Programmering og Scripting | 2 | 05-21-2008 01:07 AM |
| rpm helvede! | knmwt15000 | UNIX for dummyer Spørgsmål & svar | 7 | 03-27-2002 06:06 AM |
| negative UID / GID?! Jeg kan se 'em men hvad fanden gør betyder de?! | hellz | UNIX for dummyer Spørgsmål & svar | 2 | 09-07-2001 04:18 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Hej Jeg har alvorlige problemer med gaffel kommandoen, jeg dybest set ønsker at oprette 9 eller 10 børn processer og gemme deres PID numre i matrix, mens børnene ophold bopæl, indtil jeg dræbe () dem senere, jeg kan ikke ud til at styre, hvor mange der er lavet som de alle synes at skabe deres egne børn.
Jeg har formået at stoppe bryder mit system, kan nogen hjælpe husk, at ingen af mine bøger er enhver brug. |
|
||||
|
Dette er et meget almindeligt problem set med en gaffel.
Du kan have nogle flag variabel, der vil forhindre, at barnet proces til bord igen, når forældrene gafler. En meget primitiv kode kan somthing som denne: -- # include <stdio.h> # include <unistd.h> # include <errno. h> void vigtigste () ( int child1, child2, val, if_child; char err [1000]; if_child \u003d 1; memset (err, '\ 0', strlen (err)); printf ( "\ nParent proces ID er% d \ n", getpid ()); child1 \u003d fork (); if (child1 \u003d\u003d -1) ( strcpy (err, strerror (errno)); ) anden ( if (child1> 0) / * Hvis gaffel kommandoen resultat barn PID vil være større end nul. * / ( printf ( "\ nDet child1 proces ID er% d \ n", child1); if_child \u003d 0; / * Sæt flag her for at forhindre barnet processen fra forking * / ) ) memset (err, '\ 0', strlen (err)); if (if_child \u003d\u003d 0) ( child2 \u003d fork (); if (child2 \u003d\u003d -1) ( strcpy (err, strerror (errno)); ) printf ( "\ nDet child2 proces ID er% d \ n", child2); dræbe (child2); ) dræbe (child1); exit (0); ) |
|
||||
|
Jeg havde det samme problem med en af mine projekter (du kan se det, hvis den tråd kaldes "at gøre en proces træ ') og at få flere børn processer end forventet Jeg var virkelig et grimt problem.
Har stadig ikke fundet ud af, hvordan det fungerer præcis, men jeg håber Aniruddha råd vil hjælpe mig. |
|
||||
|
Tak annibuddha (var det, hvordan du stave det?) Se bb666's indlæg jeg troede, jeg ville sende denne ...
Jeg havde lidt problemer som jeg har føjet flere børn, men besluttede at gemme den forælder-id ved start: pid \u003d getpid () end senere Jeg har lige tjekket variable som jeg forstår, vil være i alle de børn mod mod getpid () nemlig at gøre et barn proces stoppe og vente evigt, efter det blev oprettet: if (pid! \u003d getpid ()) // det er ikke den forælder for (;;) så de processer, bare at sidde der, indtil de er dræbt (forhåbentlig) Senest redigeret af theultimatechuf; 01-24-2002 kl 06:13 PM.. |
|
||||
|
Yep. Det er en måde at gøre det, eller du kan bare sende et stopsignal, så barnet processer vil ikke spilde din hukommelse for ingenting. Erstat blot for (;;)
med dræbe (getpid (), SIGSTOP). Det er alt fint og dandy, men hvad nu, hvis du ønsker barnet proces til rent faktisk at gøre noget? For hvis du stoppe det eller sende det i en uendelig løkke, så kan du ikke helt arbejde inden for det barn, kan du? Det er faktisk den del jeg er interesseret i: arbejder inden for det barn, men forhindre den i forking når forældrene gafler igen. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|