Jump to content
noobmore

shell linux em c

Recommended Posts

noobmore

Boas estou a trabalhar num trabalho que consistem em construir uma shell

Neste momento já fiz algumas partes do código mas tem um ponto no trabalho em que eu preciso de listar os pids dos processos associados a minha shell  eu gostaria de ter uma ideia de como posso fazer.

Agradeço ajuda...

Share this post


Link to post
Share on other sites
rolando2424

Como é que estás a criar os processos?

Assumindo que estás a usar uma chamada fork() o parent fica com o PID da child, por isso podes guardar esse valor num array qualquer para o guardares.

Em pseudo-código fica algo do género:

pid_t pid = fork();

if (isParent(pid)) {
    guardar_pid_filho;
}
else {
    executar_codigo_do_processo;
}

Quando o processo terminar (o parent chama a função wait() e esta devolve o pid do filho se este tiver terminado), removes esse pid_t do array.


Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente :D

Share this post


Link to post
Share on other sites
noobmore

sim mas eu em algumas funções não nativas utilizo o comando system que me executa logo o comando mas essa é uma boa ideia vou tentar fazer com o array para listar os processos

Obrigado  pela ajuda;)

Share this post


Link to post
Share on other sites
noobmore

Boas neste momento tenho um problema na shell preciso de iniciar o processo firefox e preciso que quando escrevo firefox&devolve a prompt se escrever firefox não devolve a prompt tenho a funçao para encontrar o & se encontrar retorna 1 se não retorna 0 e tenho a função para criar o firefox assim

int firefox()

{

pid_t childpid;

childpid = fork();

if (childpid == -1){

perror ("Failed to fork");

return 1;

}

if (childpid == 0){

execl ("/usr/bin/firefox","firefox", NULL, NULL);

perror ("chilld failed to execute firefox");

return 1;

}

if (childpid != wait (NULL) ){

perror ("parent faild to wait due to sinal or error");

return 1;

}

Gostava de saber como utilizar o 1 ou o 0 para devolver ou não a prompt.

Agradecia ajuda :confused:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.