Vfork () и больше коррупции - PullRequest
       19

Vfork () и больше коррупции

0 голосов
/ 20 ноября 2011

у меня вопрос по выполнению, что будет с родительским стеком?

main()
{
    f();
    g();
}
f()
{
   vfork();
}
g()
{ 
    int blast[100],i;
    for(i=0;i<100;i++)
        blast[i]=i;
}

Ответы [ 2 ]

3 голосов
/ 20 ноября 2011

Поведение не определено согласно http://pubs.opengroup.org/onlinepubs/009695399/functions/vfork.html

Поведение не определено, если процесс, созданный vfork () [...], возвращается из функции, в которой вызывался vfork ()...]

0 голосов
/ 20 ноября 2011

На практике vfork уже не очень полезен. Прочитайте страницу vfork man для Linux, где говорится, что POSIX.1-2008 удаляет спецификацию vfork (). поведение практически такое же, как и для fork (за исключением что родитель приостановлен). Итак, держу пари, что на практике vfork почти равно fork сегодня. Но все программы, которые я читал за последние десять лет, использовали fork, а не vfork (потому что ленивая копия при записи в пейджинговый режим достаточно эффективна сегодня).

...