![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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()
{
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! |
|
||||
|
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 (). |
|
||||
|
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? |
|
||||
|
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. |
![]() |
| Hugseliste |
| Tags |
| linux |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|