Posted By: Zaba (I'd rather be skiing!) on 'CZprogram'
Title:     dalsi dotaz pro C-eckare (fork())
Date:      Mon Sep  3 15:53:54 2001

Cau 

mam program, kterej vola fork() a child potom vola funkci, ze ktery potrebuju 
cist data z parent procesu

problem je, ze nevim, jak to v ty funkci cist, kdyz poslu pointer jako 
argument, tak ta funkce zna pouze hodnotu jakou to melo ve chvili kdy byl 
argument predany, kdyz si ale vypisu kam ten pointer ukazuje, tak dostanu 
stejnou adresu jak v parent, tak v child procesu, coz mne mate...


je to zhruba takhle (zjednodusene):


int *counter;
*counter = 42;

if ( (childpid = fork()) == 0) /* child */
{
moje_funkce(*counter);
exit(0);
}
/* end if */


*counter = 0;
while ((*counter) < 30)
{
printf("counter = %dn", *counter);
(*counter)++;
sleep(1);
}



moje_funkce: (opet zjednodusene)

void
moje_funkce(int *number)
{
printf("moje_funkce: number = %dn",*number);
}

ovsem moje_funkce mi porad vraci 42, i kdyz parent us davno zmenil data na ty 
adrese

cili predavat to pres pointer nefunguje, i kdyz mne mate, ze ty pointery 
ukazuji na stejnou adresu, vzhledem k tomu, ze by parent a child meli sdilet 
pamet, tak jsem si myslel, ze by to tak mohlo jit, nevite nekdo jak na to?

Dik Zaba
 

Search the boards