LINUX.ORG.RU

утечка памяти в вызове system

 


0

2

Привет!

Предположим, у меня есть такой скрипт:

#!/usr/bin/perl
system('someapp');

Если someapp вдруг ``течёт" - значит ли это, что после того, как он выполнится, вся утекшая память останется в наборе процесса perl'а?

Ответ на: комментарий от anonymous

глядите, что у меня есть. Есть оффтоп-три-семерочки, есть strawberry perl 5.18.win32

while (1) {
  system('rdotool');
}

Набор процесса perl.exe растет константно.

Что это значит?

belkabelka
() автор топика
Ответ на: комментарий от belkabelka

On some platforms such as Windows where the fork() system call is not available, Perl can be built to emulate fork() at the interpreter level. While the emulation is designed to be as compatible as possible with the real fork() at the level of the Perl program, there are certain important differences that stem from the fact that all the pseudo child «processes» created this way live in the same real process as far as the operating system is concerned.

http://perldoc.perl.org/perlfork.html

http://perldoc.perl.org/functions/system.html

gh0stwizard ★★★★★
()
Ответ на: комментарий от belkabelka

Что это значит?

system - это fork + exec. А fork в виндовом перле реализован через попу, то есть это по сути и не форк. Вот у тебя, например, одно из проявлений этого.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от gh0stwizard

Ах вот зачем рекомендуется освобождать ресурсы перед завершением программы несмотря на то, что это всё равно должна сделать операционная система. Оказывается, в винде форк ниасилили.

anonymous
()
Ответ на: комментарий от gh0stwizard

Oh shi~

Было бы логичнее, если бы функция system работала через system(3), а не через fork(2). На винде с system проблем нет.

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