• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rgcaldas

[C][Dúvida] Como libertar um processo criado com o fork+execlp ou com o system

9 mensagens neste tópico

Boas

Existe alguma forma de libertar um processo criado com o fork() + execlp

Por exemplo, eu chamo o firefox para abrir um ficheiro de dentro do meu código com

execlp("firefox","firefox","index.html",NULL)

E o firefox abre o ficheiro mas o código só termina quando eu fechar o firefox, E o que eu queria era que a minha aplicação terminasse mas o firefox continuasse.

P.S. se for com o system é igual porque ele utiliza o fork.

Alguém tem alguma ideia

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso não estás a fazer um wait aí pelo meio?

É que se não estás o programa principal devia terminar.

PS: Em que SO estás? Testei em Mac e Linux o programa principal não ficava à espera do outros processo (aliás, com o gVim, nem valia a pena pôr o wait que terminava na mesmo antes de fechar o gVim).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais obrigado mais uma vez Rui pela resposta

Não tenho wait

Tou em linux

experimenta este código se puderes

#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>


int main(int argc, char* argv[])
{
pid_t pid;

(void)argc;(void)argv;

pid = fork();
if (pid==0)
{
	execlp("firefox",NULL);
}

return 0;
}

A mim dá-me uns erros estranhos, mas também dá se tentar correr o firefox da linha de comandos, e fica à espera

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu experimentei e o programa fecha, não fica à espera.

Sinceramente também não sei o problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais obrigado mais uma vez Rui pela resposta

Não tenho wait

Tou em linux

experimenta este código se puderes

#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>


int main(int argc, char* argv[])
{
pid_t pid;

(void)argc;(void)argv;

pid = fork();
if (pid==0)
{
	execlp("firefox",NULL);
}

return 0;
}

A mim dá-me uns erros estranhos, mas também dá se tentar correr o firefox da linha de comandos, e fica à espera

Na linha de comandos é normal que fique à espera do processo (a menos que uses o &), agora quando usas o fork, só com um wait (ou algo parecido) é que o processo pai fica à espera do filho.

Eu testei um código semelhante ao que colocaste aí, e não ficava à espera que encerrasse o firefox. Podes colocar aqui o output da execução desse código?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na linha de comandos é normal que fique à espera do processo (a menos que uses o &), agora quando usas o fork, só com um wait (ou algo parecido) é que o processo pai fica à espera do filho.

Eu testei um código semelhante ao que colocaste aí, e não ficava à espera que encerrasse o firefox. Podes colocar aqui o output da execução desse código?

Aqui fica o output

rg@rg-desktop:Desktop$ gcc teste.c -o teste.o -Wall -ansi
rg@rg-desktop:Desktop$ ./teste.o
rg@rg-desktop:Desktop$ /home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:2: Unable to find include file: "iconrc"
/home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:60: Clearlooks configuration option "sunkenmenu" is not supported and will be ignored.
/home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:61: Clearlooks configuration option "menuitemstyle" is not supported and will be ignored.
/home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:62: Clearlooks configuration option "listviewitemstyle" is not supported and will be ignored.
/home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:63: Clearlooks configuration option "progressbarstyle" is not supported and will be ignored.

Eu também me parecia que não tinha a ver com o código, deve ser do meu ubuntu (sim ainda não consigo configurar debian como deve ser  :P)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problemas com o GTK.

Tens os efeitos ligados (Compiz)? Se tiveres desliga e volta a tentar.

Pelo que vi isso é um bug, há vários pessoas pela net com esse problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Problemas com o GTK.

Tens os efeitos ligados (Compiz)? Se tiveres desliga e volta a tentar.

Pelo que vi isso é um bug, há vários pessoas pela net com esse problema...

Não tenho o compiz ligado, mas o estranho é que se correr o código com o firefox já aberto ele comporta-se como deve ser.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

g@rg-desktop:Desktop$ ./teste.o
rg@rg-desktop:Desktop$ /home/rg/.themes/T-ish-Clearlooks-AquaStyle/gtk-2.0/gtkrc:2: Unable to find include file: "iconrc"

Como podes ver por estas duas linhas, o programa terminou (repara no início da segunda linha). Ou seja, podes executar qualquer comando neste momento. No entanto, As mensagens de erro poderão ainda aparecer aí pelo meio misturadas com o que fizeres depois.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora