The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > High Level Programmering
.
google unix.com



High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
får returkoden av Forked barnet prosessen (FTP) KittyJ High Level Programmering 7 08-19-2007 04:44
displayet i barnets behandle en kommando som kalles på foreldrenes en remid1985 High Level Programmering 7 01-19-2007 06:40
hvordan finne den chid prosess id fra gitt overordnede prosessen id guhas Shell programmering og Skripting 3 10-13-2005 09:13
Implementere 2 rør mellom foreldre og barn prosessen bwgoudey High Level Programmering 2 09-25-2005 12:14
overordnede og underordnede behandle spørsmålet? Tosa High Level Programmering 0 02-16-2005 03:04

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øk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 04-07-2008
Ametis1970 Ametis1970 is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 4
Kan et barn prosessen tilbake en bestemt verdi i en overordnet prosess?

Hei alle sammen!

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

child.c ser ut som at:

Code:
int main()
{
...
return 15647
}

parent.c kaller barnet ved hjelp av fork ()-exec () eller posix_spawn ().
Hvordan kan jeg få på foreldrenes returkoden fra barn (her verdien 15647) uten bruk interprosesskommunikasjon (pipe, delt minne, ...)?
Er det noen måte å gjøre det uten IPC?

Takk!
  #2 (permalink)  
Old 04-07-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
vent () returnerer exit koden fra et barn.

Per definisjon er det to prosesser kommuniserer her, så selv dette er en form for IPC.
  #3 (permalink)  
Old 04-07-2008
ramen_noodle ramen_noodle is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: desember 2007
Sted: Virginia, USA.
Innlegg: 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
Registrert bruker
  
 

Bli Date: Mar 2008
Innlegg: 4
Takk for svar!

Slik epoke:

Kanskje jeg ikke var klart.
Liksom jeg ønsker å beregne et produkt av to heltall i barnet prosessen.
Så, child.c ser ut som at:

... enkelte # include

int main (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 bruker denne koden, i parent.c:

int main ()
(
int result;
char * args [4];
// Forberede argumenter for barn prosess
args [0] \u003d "child.exe";
args [1] \u003d argv [1];
args [2] \u003d argv [2];
args [3] \u003d NULL;
// Lansering barnet prosessen
Resultatet \u003d _spawnvp (_P_WAIT, args [0], args);
printf ( "Produkt:% d, resultat);
return 0;
)

Jeg er i stand til å ta tilbake produktet fra barnet (a * b) som kommer tilbake fra _spawnvp ()-funksjonen i resultatet variabel.
Under Linux, posix_spawnp () eller vent () returnerer bare EXIT_FAILURE eller EXIT_SUCCES. Jeg fant ikke en måte å fange i den overordnede produktet verdien beregnes i barnet (verdi som blir returnert i barnet).

Til ramen_noodle:
Jeg forstår ikke at du startChild ()-funksjonen.
Jeg vet ikke hva som er funion. Er en funksjon eller en datatype? Jeg fant ikke henvisning til funion ().
  #5 (permalink)  
Old 04-07-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Du får litt mer med WEXITSTATUS (status) etter at du har gjort en waitpid (pid, & status, ...) men dette var aldri ment som et anlegg for noe mer enn veldig små heltall.

II forstå ramen_noodle's hint riktig, ville du ha en funksjon pekeren "funion" som du kjører på barnet, og som returnerer resultatet i minneplasseringen peker på og anarg.

Hva er det du prøver å oppnå, hvorfor er regelmessig IPC utelukket?
  #6 (permalink)  
Old 04-07-2008
ramen_noodle ramen_noodle is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: desember 2007
Sted: Virginia, USA.
Innlegg: 251
Takk for hjelpe Era.
Alt som kan bli returnert fra et barn er det pid uten IPC.
That's all mine eksempel gjør. Husk at ved veiskillet foreldrene adressen plassen er kopiert til barnet. Etterpå ingen oppdrag er delt.
Unntaket er vfork. Det er noen stygge hacks som kan oppnå det du trenger å bruke denne. Du bør kanskje vurdere tråder i stedet. Det høres ut som hva du har i tankene.

Tradisjonelt i en prosess (IPC) paradigme: Rør er enkle og rene.
Alt annet vil ta tid å venne seg til.
Closed Thread

Hugseliste

Tags
linux

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 02:31.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0