LINUX.ORG.RU

fork()


0

0

Hi! main() { int pid; int i=99; while (pid!=101) { pid=fork(); if(pid==0) { pid++; // pid==100 exit(0); } printf("%d",i); //pid==99 } } Ya mogu kak-nibud' sohranit znachenie i, kotoroe izmenyaetsya v drugom processe? Zhenya Kelyarsky <kelyar@mail.ru>

anonymous

не понял?
p.s. поставь user line breaks

Hamster
()

Каков вопрос - таков ответ: exit(i) :))

vodz ★★★★★
()

Hi!
Sorry for translit.
V obshem problema bila takaya:
1.v programme est' peremennaya (naprimer, i=99)
2.porozhdayetsya noviy process fork'om
3. Process izmenyaet etu peremenuyu (i=100) i vihodit
4. i snova =99.

T.e. noviy process imeet svoe adresnoe prostranstvo, v kotorom
sozdalas' local'naya peremennaya. No hotelos' sohranit' novoe
znachenie (100). Pochital knigi, reshil problemu semaforami i
shared memory. Hotelos' uznat', esli reshenie proshe? Spasibo

anonymous
()

1. thread. Она не должна быть локальная тогда, как в первом примере
2. shared memory
3. mmap, удобно тем что значение сохранится и видно отовсюду,
но надо использовать указатели в этом случае.


ovsov
()

4. pipe. Один пишет туда, другой читает. 5. signal + файлы с блокировками 6. socket 7. ну и как выше - exit(i)

vodz ★★★★★
()

Самое простое это шаред мемори просто в начале шарин участок а потом может любой проц юзать его { int fd = shmget( Key, size, IPC_CREATE) // проверка на ошибки int *buf = (int)shmat( fd); *buf=0; // проверка на ошибки

if ( fork() ) {

*buf++; exit(0); }

// .........

shmdl(buf); }

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.