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

Recriar a função ls -lisa em linguagem C

Discussão em 'Programação' iniciada por miguel.rosado, 26 de Novembro de 2008. (Respostas: 6; Visualizações: 1573)

  1. Boas, preciso de ajuda.
    Tenho um trabalho da faculdade em que o objectivo é recriar a função ls -lisa(usada para mostrar as propriedades de um directório ou ficheiro.
    Estou algo para o encalhado e pedia-vos ajuda no sentido se conhecem como é a função ls implementada ou se há manuais que me possam ajudar.
    Já estou a utilizar o man 2 stat que já me deu uma grande ajuda.

    Abraço
     
  2. AliFromCairo

    AliFromCairo Power Member

    No livro do Kernighan & Ritchie, existe uma secção onde falam sobre directórios. Penso que podes utilizar as funções opendir e readdir.
     
  3. Neptune

    Neptune 1st Folding then Sex

    execlp("ls","ls","-lisa",NULL);

    Mas cuidado, ao chamar esta função estás a "dizer" ao programa que o fluxo de execução deve ser redireccionado para o programa ls e portanto tudo o que vier no código a seguir a esta função não será executado. Para resolver isso podes fazer algo deste género:
    Código:
    if (fork()==0)
        execlp("ls","ls","-lisa",NULL);
    else {
        //restante código do programa a ser executado pelo processo principal
    }
     
    Última edição: 26 de Novembro de 2008
  4. AliFromCairo

    AliFromCairo Power Member

    Algo me diz que não é esse o objectivo do trabalho. Caso seja, nem precisas de ir tão longe, podes simplesmente dar uso à função system.
     
  5. Neptune, obrigado pela dica, mas infelizmente o que o prof me pediu foi uma alternativa ao ls -lisa, por isso se ele me encontra a utiliza-lo provavelmente vai anula-lo.
    Mas mais uma vez obrigado :D

    AliFormCairo vou procurar essas duas funções a ver o que consigo.
     
  6. Neptune

    Neptune 1st Folding then Sex

    Ele não explicou bem o que pretendia, daí eu ter dito o que disse. Quanto ao system, não passa de uma chamada a um fork/exec, por isso não vejo uma razão para subir ainda mais um nível de indirecção.

    Alternativa portanto será algo que recrie a função ls e não algo que a utilize, certo? Podes consultar o código da função ls aqui: ftp://ftp.gnu.org/gnu/coreutils/coreutils-6.9.tar.gz ,mas tens um longo caminho a percorrer se o objectivo for mesmo recriar o ls.
     
  7. Exacto, algo que não use a função ls mas que a recrie. Vou ver esse ficheiro e se avançar alguma coisa depois digo aqui.

    Abraço
     

Partilhar esta Página