lug-bg: system()
Zdraveite, Kak moga da ubia process pusnat ot programa chrez system()? Ideiata e ako procesa ne e grymnal sled niakolko sekundi da se ubiva rychno. Zasega edinstvenoto smisleno neshto do koeto uspiah da stigna e neshto ot roda signal(SIGALRM,killchild); alarm(3); system(wa); signal(SIGALRM,SIG_DFL); Vyprosyt e kakvo tochno da sydyrja procedurata killchild(), taka che da ubiva. Ne e zadyljitelno za celta da se izpolzva system(), no tova mi se vijda po-prosto ot fork() i exec()-proizvodni funkcii, pyk i dori da izpolzvam exec() pak ne moga da se setia za nachin da grymna procesa. Pak v syshtia duh - kak moga da ogranicha po niakakyv nachin pametta izpolzvana ot vyprosnia child process do niakakvi tvyrdi granici naprimer 16MB data size i 1MB stack. Znam za setrlimit(), samo che (ne mi se smeite :) ne mojah da zacepia kak tochno raboti... Blagodaria predvaritelno... A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
Re: lug-bg: system()
On Sun, 5 May 2002 15:07:22 +0300 Ilia Trendafilov [EMAIL PROTECTED] wrote: Zdraveite, Kak moga da ubia process pusnat ot programa chrez system()? Ideiata e ako procesa ne e grymnal sled niakolko sekundi da se ubiva rychno. Zasega edinstvenoto smisleno neshto do koeto uspiah da stigna e neshto ot roda signal(SIGALRM,killchild); alarm(3); system(wa); signal(SIGALRM,SIG_DFL); Ne ti preporuchvam da polzvash system(), mozesh da beresh jadove. Po dobra realizacia e fork() - exec(), kato v tozi varian njama da ti se nalozi da pravish evristiki po koj proces trjabva da streljash s pushkata kill(). Vyprosyt e kakvo tochno da sydyrja procedurata killchild(), taka che da ubiva. Ne e zadyljitelno za celta da se izpolzva system(), no tova mi se vijda po-prosto ot fork() i exec()-proizvodni funkcii, pyk i dori da izpolzvam exec() pak ne moga da se setia za nachin da grymna procesa. Pak v syshtia duh - kak moga da ogranicha po niakakyv nachin pametta izpolzvana ot vyprosnia child process do niakakvi tvyrdi granici naprimer 16MB data size i 1MB stack. Znam za setrlimit(), samo Viz primera po dolu. Ako v 'ulimit -a' imash njakakvi po malki ogranichenja tova njama da sraboti (man getrlimit)! #include stdio.h #include sys/time.h #include sys/resource.h #include unistd.h int zzz() { struct rlimit my_limit; if (getrlimit(RLIMIT_DATA, my_limit) != 0) { /* Error */ return -1; } printf(RLIMIT_DATA: %u %u\n, my_limit.rlim_cur, my_limit.rlim_max); if (getrlimit(RLIMIT_STACK, my_limit) != 0) { /* Error */ return -1; } printf(RLIMIT_STACK: %u %u\n, my_limit.rlim_cur, my_limit.rlim_max); } int xxx() { struct rlimit my_limit; my_limit.rlim_cur = 1024 * 16; my_limit.rlim_max = 1024 * 16; if (setrlimit(RLIMIT_DATA, my_limit) != 0) { /* Error */ return -1; } my_limit.rlim_cur = 1024 * 1; my_limit.rlim_max = 1024 * 1; if (setrlimit(RLIMIT_STACK, my_limit) != 0) { /* Error */ return -1; } return 0; } int main() { zzz(); xxx(); zzz(); } che (ne mi se smeite :) ne mojah da zacepia kak tochno raboti... Blagodaria predvaritelno... = === A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html = === -- Dimitar Peikov Programmer Analyst Globalization Group We Build e-Business RILA Solutions 27 Building, Acad.G.Bonchev Str. 1113 Sofia, Bulgaria phone: (+359 2) 9797320 phone: (+359 2) 9797300 fax: (+359 2) 9733355 http://www.rila.com A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
Re: lug-bg: system()
Ne ti preporuchvam da polzvash system(), mozesh da beresh jadove. Po dobra realizacia e fork() - exec(), kato v tozi varian njama da ti se nalozi da pravish evristiki po koj proces trjabva da streljash s pushkata kill(). Dobre, kaji kak tochno da go realiziram, zashtoto na men ne mi e iasno kak moga da izbegna vyrpsonite evristiki... #include stdio.h #include sys/time.h #include sys/resource.h #include unistd.h int zzz() { struct rlimit my_limit; if (getrlimit(RLIMIT_DATA, my_limit) != 0) { /* Error */ return -1; } printf(RLIMIT_DATA: %u %u\n, my_limit.rlim_cur, my_limit.rlim_max); if (getrlimit(RLIMIT_STACK, my_limit) != 0) { /* Error */ return -1; } printf(RLIMIT_STACK: %u %u\n, my_limit.rlim_cur, my_limit.rlim_max); } int xxx() { struct rlimit my_limit; my_limit.rlim_cur = 1024 * 16; my_limit.rlim_max = 1024 * 16; if (setrlimit(RLIMIT_DATA, my_limit) != 0) { /* Error */ return -1; } my_limit.rlim_cur = 1024 * 1; my_limit.rlim_max = 1024 * 1; if (setrlimit(RLIMIT_STACK, my_limit) != 0) { /* Error */ return -1; } return 0; } int main() { zzz(); xxx(); zzz(); } Tova e prekrasno, samo che ne e neshto novo. Moje bi az ne obiasnih tochno kyde mi e problema sys setrlimit. Znachi kak tochno se slagat limitite iasno, ne vidiah niakyde iz man da pishe v kakvi edinici se iskat vyprosnite stoinosti, no tova niama chak takova znachenie. Biah ustanovil oshte che kato se sloji limit na neshto to toi se predava i vyrhu child processes. Izvikvam procesyt sys system() otnovo, no ne mislia che v tova e problema. Limityt si go ima. Ne mojah da razbera obache zashto nezavisimo dali procesa izpolzva 16 ili 32 MB, toi se izpylniava samo ako RLIMIT_DATA e nad 79000-8, no i za dvata sluchaia pri edno i syshto chislo... Greets A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
Re: lug-bg: system()
Dobre, kaji kak tochno da go realiziram, zashtoto na men ne mi e iasno kak moga da izbegna vyrpsonite evristiki... Ok, usetih se, toia vypros otpada :))) Ostava, samo memory limita :) A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html