lug-bg: system()

2002-05-05 Thread Ilia Trendafilov

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()

2002-05-05 Thread Dimitar Peikov

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()

2002-05-05 Thread Ilia Trendafilov

 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()

2002-05-05 Thread Ilia Trendafilov

 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