The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Alto Nível de programação
.
google unix.com



Alto Nível de programação Post perguntas sobre C, C + +, Java, SQL, e outras linguagens de programação aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
inferno & matemática ogoy Programação Shell Script e 5 05-26-2008 10:58
inferno e sqlite ogoy Programação Shell Script e 2 05-21-2008 12:07
rpm inferno! knmwt15000 UNIX para Dummies Perguntas & Respostas 7 03-27-2002 06:06
negativas UID / GID?! Posso vê-los, mas que diabo é que eles significam? hellz UNIX para Dummies Perguntas & Respostas 2 09-07-2001 03:18

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 01-22-2002
theultimatechuf theultimatechuf is offline
Usuário
  
 

Join Date: Jan 2002
Localização: Reino Unido
Posts: 6
Angry fork () ing diabos!

Olá eu estou tendo sérios problemas com o garfo comando, basicamente eu quero criar 9 ou 10 crianças e armazenar os seus processos pid números em série, enquanto as crianças até ficar residente i matar ()-los mais tarde, parece que eu não posso controlar a forma como muitos são feitas como todas elas parecem para criar os seus próprios filhos.

Eu tenho conseguido parar de bater o meu sistema, alguém pode ajudar, por favor, nenhum dos meus livros são qualquer utilização.
  #2 (permalink)  
Old 01-22-2002
Aniruddha aniruddha is offline
Usuário
  
 

Join Date: Jan 2002
Local: Pune, Índia
Posts: 3
Este é um problema muito comum observado com garfo.
Você pode ter alguns bandeira variável que irá impedir a criança de novo processo para a mesa quando o pai garfos.

Um código pode ser muito primitivo somthing como este: --

# include <stdio.h>
# include <unistd.h>
# include <errno. h>

void main ()
(
int child1, child2, val, if_child;
char err [1000];

if_child \u003d 1;

memset (err, '\ 0', strlen (err));

printf ( "\ nParent processo ID é% d \ n", getpid ());

child1 \u003d fork ();
if (child1 \u003d\u003d -1)
(
strcpy (err, strerror (errno));
)
diferente
(
if (child1> 0) / * Se garfo comando for bem-sucedido filho PID será maior do que zero. * /
(
printf ( "\ nO child1 processo ID é% d \ n", child1);
if_child \u003d 0;
/ * Defina aqui o pavilhão para evitar processo de criança forking * /
)
)

memset (err, '\ 0', strlen (err));

if (if_child \u003d\u003d 0)
(
child2 \u003d fork ();
if (child2 \u003d\u003d -1)
(
strcpy (err, strerror (errno));
)

printf ( "\ nO child2 processo ID é% d \ n", child2);

matar (child2);
)


matar (child1);

exit (0);
)
  #3 (permalink)  
Old 01-22-2002
theultimatechuf theultimatechuf is offline
Usuário
  
 

Join Date: Jan 2002
Localização: Reino Unido
Posts: 6
Muito obrigado, parece promissor, aguardo com expectativa o dia em que eu possa responder de outra pessoa * NIX programmig pergunta. Parece que vai demorar mais tempo do que com o VB.
  #4 (permalink)  
Old 01-23-2002
bb666 bb666 is offline
Usuário
  
 

Join Date: Jan 2002
Localização: Roménia
Lugares: 10
Eu tive o mesmo problema com um dos meus projetos (você pode vê-lo se a discussão chamado "processo de tomada uma árvore") e cada vez mais processos criança do que eu esperava era realmente um problema desagradável.
Ainda não descobri como é que funciona exactamente mas espero Aniruddha do conselho irá me ajudar também.
  #5 (permalink)  
Old 01-24-2002
theultimatechuf theultimatechuf is offline
Usuário
  
 

Join Date: Jan 2002
Localização: Reino Unido
Posts: 6
Graças annibuddha (que era como você escreve?) Vendo bb666 do post eu pensei que eu ia postar isso ...

Eu tive um pouco de problemas como acrescentei mais filhos, mas decidiu a loja-mãe no início id:

pid \u003d getpid ()

que mais tarde eu apenas verificado a variável que eu entendo seria em todas as crianças contra a contra getpid ()

ou seja, tornar a criança um processo de parar e esperar para sempre depois que foi criada:

if (pid! getpid \u003d ()) // este não é o pai
for (;)

em seguida, os processos só sentar lá até que eles sejam mortos (espero)

Última edição por theultimatechuf; em 01/24/2002 06:13..
  #6 (permalink)  
Old 01-25-2002
bb666 bb666 is offline
Usuário
  
 

Join Date: Jan 2002
Localização: Roménia
Lugares: 10
Yep. Essa é uma maneira de fazê-lo, ou você poderia simplesmente enviar um sinal fechado assim que a criança não vai desperdiçar o seu processos de memória para nada. Basta substituir por (;)
com mato (getpid (), SIGSTOP).
That's all fina e elegante, mas o que se pretende que o processo para a criança realmente fazer alguma coisa? Porque se você parar com isso ou enviá-lo em um loop infinito, então você não pode trabalhar bastante dentro da criança pode?
Essa é realmente a parte que estou interessado em: trabalhar no interior da criança, mas impedi-lo de uma vez a mãe forking forquetas novamente.
  #7 (permalink)  
Old 01-26-2002
Perderabo's Avatar
Perderabo Perderabo is online now Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Localização: Ashburn, Virginia
Mensagens: 9.114
Vocês estão fazendo isso muito mais difícil do que deveria ser. Vamos começar pelo forking um processar e armazenar as suas pid:
Código:
#include &lt;stdio.h>
#include &lt;unistd.h>

void main()
{
        int pid, parentpid, childpid;

        parentpid=getpid();
        printf("I am the parent process and my pid is %d\n", getpid());

        if (pid=fork()) {
                childpid=pid;
        } else {
                printf("I am a child process and my pid is %d\n", getpid());
                exit(0);
        }

        printf("I am still the parent process and my pid is %d\n", getpid());
        exit(0);
}
Aqui, a criança só exibe o processo pid então saídas. Você provavelmente irá querer fazer com o seu filho mais processos, mas depois de cuidar de seus filhos têm de sair das empresas para que elas participem em qualquer outra forking. Também no meu exemplo, o progenitor saídas processo bastante rápido. Isto significa que a criança vai herdar init processo e para tirar-la quando ela morre. Se eu queria manter o pai volta, eu preciso segurar que questões wait () convites para cada criança que morre. Se eu não fizer, as crianças se tornassem zumbis. Eu costumo deixar o pai morrer.

Assim que tiver algum código que faz o que queremos, quando queremos fazê-la N vezes, usamos um loop:
Código:
#include &lt;stdio.h>
#include &lt;unistd.h>

void main()
{
        int n, pid, parentpid, childpids[10];

        parentpid=getpid();
        printf("I am the parent process and my pid is %d\n", getpid());

        for(n=0; n<5; n++) {
                if (pid=fork()) {
                        childpids[n]=pid;
                } else {
                        printf("I am a child process and my pid is %d\n", 
                                        getpid());
                        exit(0);
                }
        }

        printf("I am still the parent process and my pid is %d\n", getpid());
        exit(0);
}
Tal como solicitado pelo OP, as crianças da IDPs são gravados em um array. Mas eu ainda deixa a mãe morrer.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 09:17.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0