Article View: es.comp.os.linux.programacion
Article #7958Re: problema con execvp()
From: Fernando Arbeiza
Date: Wed, 22 Jan 2003 23:44
Date: Wed, 22 Jan 2003 23:44
78 lines
3382 bytes
3382 bytes
Hola:
A ver si te puedo aclarar algo. Vamos all� ;-)
On Thu, 23 Jan 2003 01:05:57 +0100, Antonio <aperlu@obelix.umh.es>
wrote:
> Hola a todos, el tema es que estoy intentando ejecutar comandos en
> backgraund empleando la siguiente estructura:
> fork(); execvp(argv[argc],argv);
> El problema es que no me aclaro para definir los argumentos, es decir
> no se donde o como incluir el caractar & para que se lanze en
> backgraund.
Para conseguir que un comando se ejecuta en background, no tienes que
especificar el '&' en el comando que lances. El "truco" est� en hacer
algo como esto:
/****************/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
pid_t pid;
pid = fork();
if (pid < 0) {
perror("fork");
exit(EXIT_FAILURE);
}
if (pid != 0) {
printf("%s\n", "El padre ha terminado");
exit(EXIT_SUCCESS);
}
/* Esto se ejecutar� en background */
sleep(5);
printf("%s\n", "El hijo ha terminado");
exit(EXIT_SUCCESS);
}
/****************/
De esta forma, el padre sale en seguida, y es el hijo el que se encarga
de ejecutar los comandos (en tu caso, el execvp), pero estando ya en
background. Ejec�talo el ejemplo y ver�s.
> Tambien me gustaria saber si es posible lanzar un proceso en backgraund
> empleando para ello algun tipo de se�al o no.
_Que yo sepa_, los procesos no pasan a background al recibir una se�al.
Seg�n signal(7), esto es lo que puede pasar cuando un proceso recibe una
se�al:
A La acci�n por omisi�n es terminar el proceso.
B La acci�n por omisi�n es no hacer caso de la se�al.
C La acci�n por omisi�n es terminar el proceso y hacer un
volcado de memoria.
D La acci�n por omisi�n es parar el proceso.
E La se�al no puede ser capturada.
F La se�al no puede ser pasada por alto.
Podr�as hacer un manejador de se�al que, al recibirla, pasase el proceso
a background mediante un fork, pero ahora mismo no veo ninguna utilidad.
Por cierto, una direcci�n que puede ser de utilidad (eso s�, en ingl�s):
<URL: http://stommel.tamu.edu/~baum/programming.html>
> Muchas gracias por vuestra ayuda
> Un saludo.
Espero que te haya servido.
Un saludo :-)
--
Fernando Arbeiza <URL: mailto:arbeizaf@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Technical Details
Message-ID:
<slrnb2ub7g.3br.arbeizaf@jupiter.olimpo>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!81-203-248-51.user.ono.COM!not-for-mailReferences:
<b0n8fh$h53$2@lamanonegra.eg>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,89fc5ef4e0b3d525 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-01-22 15:53:49 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!81-203-248-51.user.ono.COM!not-for-mail From: Fernando Arbeiza <arbeizaf@ono.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: problema con execvp() Date: Thu, 23 Jan 2003 00:44:48 +0100 Lines: 78 Message-ID: <slrnb2ub7g.3br.arbeizaf@jupiter.olimpo> References: <b0n8fh$h53$2@lamanonegra.eg> NNTP-Posting-Host: 81-203-248-51.user.ono.com (81.203.248.51) Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1043279628 26993697 81.203.248.51 (16 [148301]) X-Orig-Path: jupiter.olimpo!news User-Agent: slrn/0.9.7.4 (Linux)