cae32 (cae32) wrote,
cae32
cae32

perl SIGCHLD waitpid ECHILD

Давно хотел написать про особенности поведения обработки сигнала SIGCHLD в perl >=5.8. При Лужкове (5.6) такого не было, ответственно заявляю. Под катом код, никому не интересно, кроме активных перловиков



	$SIG{'CHLD'} = sub {
		my $child ;
	# nu che blya! ele nashel, mudaki i pidorasy! ;-EEE
		local $! ;
	# this local are needs, cause:
	# 1. signal raise once for all riped children.
	# 2. need loop for saving status
	# 3. need call waitpid for it
	# 4. waitpid can return -1, if no more riped childs (end of loop, of cause)
	# 5. and waitpid setting errno (aka $!) to ECHILD at this situation
	# 6. in perl 5.8 signal handler are not same like a C lib handler. It calls between Perl operations
	# 7. as result, next system call (for me it's a select(2), but people in the this your internets wrote for accept(2)
	#	and some else) returns with ECHILD. 
	#	ECHILD after select or accept!!! Yoma, narod! Just a like command.com in FreeBSD, xexe
	# 8. for masking it, recomended using local $!, dont comment it, please

		while (($child = waitpid (-1,WNOHANG)) > 0) {
	# save state
			$self->{__exit_status}->{$child} = $? ;
		}
	} ;



Одна строка, а неделю мучался в прошлом году... Самое противное, что в старом чпуксовом 5.6 всё пучком жило, без проблем. Но 5.6 пришлось выкинуть на, так как в нём уже не собирался нужный модуль... Почти все собирались, кроме одного важного. И началось... Хвала аллаху, нашёл и поставил нужный оператор, теперь тупо копипащщу. Юзайте, копирихтов нету, паблик в домен.
Tags: echild, perl, sigchld, watpid
Subscribe

  • А как они узнали?

    Неандертальцы передали людям защиту от коронавируса ================ Хотя не имели даже примитивных генетических знаний. А вот подишь ты!

  • Новости с родины

    В Ростовской области инспектор ФСИН и двое заключенных отравились наркотиками после совместного их употребления. Впоследствии один из осужденных…

  • Музей Пушкина отличился

    В официальном ответе: Ну что я могу сказать - основатель русского литературного языка в восторге. Институт русского языка, кстати, совсем…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments