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