1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Gestão de processos em linux / Linguagem C

Discussão em 'Programação' iniciada por ifrias, 13 de Junho de 2007. (Respostas: 8; Visualizações: 3446)

  1. Boas ! Tenho apenas uma dúvida relativa a um programa bastante simples que estou a tentar escrever . O programa deverá listar todos os processos (do mesmo user do programa) actualmente a correr no SO e deixar que o utilizador escolha qual o processo que deve ser morto . Alguém me sabe dar uma luz no sentido de me explicar sucintamente como se faz, ou que funções utiliza ?Inicialmente tinha pensado em criar um novo processo e no processo filho listar processos em execução usando a função execlp() . A questão está em conseguir tratar esta informação, uma vez que usada a execlp, o processo filho termina ... Os dados teriam de ir para algum ficheiro intermédio ?
     
  2. hYpe

    hYpe [email protected] Member

    Ou isso ou para memória partilhada.
     
  3. Lossoth

    Lossoth Power Member

    E estas a pensar usar a função execlp() como?

    Se queres usar mesmo essa função podes tentar usar o dup para passar o stdout para outro file qualquer ou mesmo para um pipe com o pai.
    A questão é que não sei se isto funciona porque ao usares o execlp ele faz kill ao filho e portanto deves perder a ligação com o pai.
     
  4. O execlp() serviria para executar o ps, mostrando quais os processos afectos ao utilizador actual .Pensei nessasolução, em redireccionar output para um ficheiro edepois mostrá-lo, a questão põe-se quando quiser mostrar ao utilizador quais os processos que ele quer matar . De qualquer das formas este problema não tem grande importância. O objectivo mesmo era saber como usar a primitiva kill()...para matar processos . Fiquem bem !
     
  5. lealoureiro13

    lealoureiro13 Power Member

    não sei ter alguma coisa a ver com isto , mas tb tenho um problema parecido....


    queria fazer um prog em c que executa-s um processo numa tal directoria e que guarda-se a pid do processo para mais tarde desligar esse mesmo processo atraves do comando kill ou algo parecido...


    cumps...
     
  6. suponho que isso até seja mais fácil de se fazer . Basta guardar o pid do processo num ficheiro de texto, utilizando o redireccionamento de output que o Lossoth falou em cima . Da próxima vez que o programa fosse aberto bastaria abrir o ficheiro previamente guardado, converter a string do ficheiro de texto para int usando atoi() (corrijam-me se estiver errado ...) e matar o processo ... A minha questão é parecida, sim , mas o problema está em manipular não um, mas sim vários pids ... :S
     
  7. lealoureiro13

    lealoureiro13 Power Member

    e de que maneira eu vou buscar o pid de um novo processo que inicio através do prog quere fazer?
     
  8. Homem Bomba

    Homem Bomba Power Member

  9. cmmr

    cmmr [email protected] Member

    Boas!

    Podes tentar o system("ps"); em vez do execlp.

    Com o System o comando é executado e o processo que o chama não morre. Apenas cede o controlo ao ps neste caso e depois retoma a execução normal.

    Espero ter ajudado.
     

Partilhar esta Página