The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Højtstående Programmering
.
google unix.com



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
få returkode af kløvet barn processen (FTP) KittyJ Højtstående Programmering 7 08-19-2007 03:44 AM
displayet i et barn proces en kommando kaldes i moderselskabet en remid1985 Højtstående Programmering 7 01-19-2007 06:40 PM
hvordan man finder den chid processen id fra givne moderselskab proces id guhas Shell Programmering og Scripting 3 10-13-2005 08:13 AM
Gennemførelsesbeføjelser 2 rør mellem en forælder og barn proces bwgoudey Højtstående Programmering 2 09-24-2005 11:14 PM
forælder og barn proces spørgsmål? Tosa Højtstående Programmering 0 02-16-2005 03:04 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 04-07-2008
Ametis1970 Ametis1970 is offline
Registreret Bruger
  
 

Join Date: Mar 2008
Stillinger: 4
Kan et barn proces returnerer en bestemt værdi til et moderselskab proces?

Hej alle!

Jeg har to C kildefil: child.c og parent.c.

child.c ser gerne, at:
Code:
int main()
{
...
return 15647
}
parent.c opfordrer barnet med gaffel ()-exec () eller posix_spawn ().
Hvordan kan jeg komme i moderselskabet returkode fra barn (her værdi er 15647) uden at bruge InterProcess kommunikation (rør, delt hukommelse, ...)?
Er der nogen måde at gøre det uden at IPC?

Tak!
  #2 (permalink)  
Old 04-07-2008
epoke era is offline Forum Advisor  
Herder af Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: / der / er / kun / bin / sh
Stillinger: 3652
vent () returnerer exit-kode fra et barn.

Pr. definition er der to processer kommunikere her, så selvom det er en form for IPC.
  #3 (permalink)  
Old 04-07-2008
ramen_noodle ramen_noodle is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Dec 2007
Beliggenhed: Virginia, USA.
Posts: 251
Code:
pid_t startChild(void (*funion)(void *arg), void *anarg) {
pid_t chld;
                       if ( (chld = fork()) == 0) {
                           funion(anarg);
                       }
                       return chld;
}
  #4 (permalink)  
Old 04-07-2008
Ametis1970 Ametis1970 is offline
Registreret Bruger
  
 

Join Date: Mar 2008
Stillinger: 4
Tak for svarene!

Til epoke:

Måske var jeg ikke klar.
Meningen, jeg ønsker at beregne et produkt af to heltal i barn proces.
Så child.c ser gerne, at:

... nogle # include

int vigtigste (int argc, char * argv [])
(
int a;
int b;
a \u003d atoi (argv [1]);
b \u003d atoi (argv [2]);
return a * b;
)

Under Windows, hvis jeg bruger denne kode, i parent.c:

int vigtigste ()
(
int resultat;
char * args [4];
// Forberede argumenter for barnet proces
args [0] \u003d "child.exe";
args [1] \u003d argv [1];
args [2] \u003d argv [2];
args [3] \u003d NULL;
// Lancere barnet proces
result \u003d _spawnvp (_P_WAIT, args [0], args);
printf ( "Produkt:% d, resultat);
tilbagevenden 0;
)

Jeg er i stand til at fange returnere produktet fra barn (a * b), som vender tilbage fra _spawnvp () funktion i resultat variabel.
Under Linux, () eller posix_spawnp vent () returnerer kun EXIT_FAILURE eller EXIT_SUCCES. Jeg kunne ikke finde en måde at fange i den forælder varens værdi beregnes i barnet (værdi, der returneres i barn).

Til ramen_noodle:
Jeg forstår ikke du startChild () funktion.
Jeg ved ikke, hvad der er funion. Er en funktion eller en datatype? Jeg fandt ikke henvisning til funion ().
  #5 (permalink)  
Old 04-07-2008
epoke era is offline Forum Advisor  
Herder af Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: / der / er / kun / bin / sh
Stillinger: 3652
Du får lidt mere med WEXITSTATUS (status), efter du har gjort en waitpid (pid, & status, ...), men det var aldrig ment som en mulighed for noget mere end meget små heltal.

II forstå ramen_noodle's antydning korrekt, vil du have en funktion pointer "funion", som du kører i barnet, og som returnerer dens resultat i hukommelsesplads peget på af anarg.

Hvad er du prøver at opnå, hvorfor er regelmæssig IPC ud af det spørgsmål?
  #6 (permalink)  
Old 04-07-2008
ramen_noodle ramen_noodle is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Dec 2007
Beliggenhed: Virginia, USA.
Posts: 251
Tak for den hjælp Era.
Alle, der kan være vendt tilbage fra et barn er det pid uden ipc.
Det er alt mit eksempel gør. Husk, at på gaffel forældrene henvende plads er kopieret ind i barnet. Bagefter ingen opgaver er delt.
Undtagelsen er vfork. Der er nogle grimme hacks, der kan udrette, hvad du skal bruge dette. Du vil måske overveje tråde i stedet. Det lyder som om, hvad du har i tankerne.

Traditionelt i en proces (IPC) paradigme: Rør er enkle og rene.
Alt andet vil tage tid at vænne sig til.
Closed Thread

Bogmærker

Tags
linux

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 11:32 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0