Article View: es.comp.os.linux.programacion
Article #17907Re: Algunas cosas de Linux y C.
From: pedro fernandez
Date: Fri, 15 Oct 1999 00:00
Date: Fri, 15 Oct 1999 00:00
98 lines
3111 bytes
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-mailReferences:
<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