🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #17907

Re: Algunas cosas de Linux y C.

#17907
From: pedro fernandez
Date: Fri, 15 Oct 1999 00:00
98 lines
3111 bytes
This is a multi-part message in MIME format.
--------------26A8DEE1319F2667F30093A4
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

>
>
>  - �alguien me puede explicar como usar o como funciona
>  fork()? A base del man es imposible... yo "entiendo" que
>

Al hacer pid=fork obtienes el valor de pid de los procesos que seran un
cero para padre y el pid del hijo
Puedos hacer algo de este estilo

if (pid=fork())==-1)
    {
    -----error-----
    }
if (pid==0) /* es el hijo*/
    {
    ----
    el codigo que quieres que ejecute el hijo
    ----
    }
    else
       {
        -------
        el codigo que quieres que ejecute el padre
        --------
    }

Esto es lo basico para manejar el fork, hay funciones para ver cuando
muere el hijo,..... mirate el waitpid

>  - �Como implementar temporizadores en Linux? Si yo pretendo
>  que cada X milisegundos se ejecute una cierta funci�n (cosa
>  que hacia en MSDOS mediante el timer0 y su RSI), �tengo que
>  usar un fork() y dentro de mi funcion un usleep(), o hay
>  funciones de temporizacion en Linux?

Te mando un ficherito para lo del temporizador



--------------26A8DEE1319F2667F30093A4
Content-Type: text/plain; charset=us-ascii;
 name="tempo"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="tempo"


/***********************************************/
/* Manejador DE INTERRUPCION DEL TEMPORIZADOR  */
/***********************************************/

static void temporizador(int s)
{
  extrae(); /*esta es la funcion que ejecuta cada xtiempo*/
}    




/***********************************************/
/* INICIADOR DE INTERRUPCION DEL TEMPORIZADOR 1 */
/***********************************************/

void iniciar_temporizador(void)
{
  struct sigaction evento;

  evento.sa_handler=temporizador;
  evento.sa_flags=SA_RESTART;
  sigemptyset(&evento.sa_mask);
  sigaction(SIGALRM,&evento, NULL);
}

/*********************************/
/* DURACION DEL   TEMPORIZADOR  1*/
/*********************************/

void t_segundos()
{
  struct itimerval valor;
  valor.it_interval.tv_sec=/* pon los segundos que quieras*/
  valor.it_interval.tv_usec=/* pon los microseg que quieras*/
  valor.it_value=valor.it_interval;
  setitimer(ITIMER_REAL,&valor,NULL);
}

desde el main inicias el temporizador con las funciones de antes:

 /* iniciamos el temporizador */
  iniciar_temporizador();
  t_segundos();  
--------------26A8DEE1319F2667F30093A4--
Technical Details
Message-ID: <38070AF5.517F2951@informasa.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <3805E5BC.205EA33F@iname.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,79c781e55971afa
X-Google-Attributes: gidf86c8,public
From: pedro fernandez <pedro@informasa.es>
Subject: Re: Algunas cosas de Linux y C.
Date: 1999/10/15
Message-ID: <38070AF5.517F2951@informasa.es>
X-Deja-AN: 537027879
References: <3805E5BC.205EA33F@iname.com>
X-Accept-Language: en
Content-Type: multipart/mixed; boundary="------------26A8DEE1319F2667F30093A4"
Organization: Telefonica Transmision de Datos
Mime-Version: 1.0
Newsgroups: es.comp.os.linux.programacion