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

programacao C em linux

Discussão em 'Programação' iniciada por vorenus, 13 de Novembro de 2007. (Respostas: 15; Visualizações: 1090)

  1. vorenus

    vorenus Power Member

    Boas, estou com um problema, tenho que guardar num ficheiro o resultado de /proc/cpuinfo mas com um # no inicio de cada linha...

    fazendo isso pela linha de comandos é com o codigo:
    Código:
    cat /proc/cpuinfo | awk '{print "#" $0}'
    
    mas com o execlp da conflito com as aspas e plicas... pois deveria ficar
    Código:
    execlp("[COLOR=Yellow]cat[/COLOR]","[COLOR=Yellow]cat[/COLOR]","[COLOR=Yellow]/proc/cpuinfo[/COLOR]"," [COLOR=Yellow]|[/COLOR] ","[COLOR=Yellow]awk ' {printf[/COLOR][COLOR=White][B]"[/B][/COLOR]#" [COLOR=Yellow]$0}'[/COLOR]",[COLOR=DeepSkyBlue]NULL[/COLOR]);
    
    alguem me sabe dizer como resolver este problema?

    ou uma alternativa ?
     
    Última edição: 13 de Novembro de 2007
  2. Tyran

    Tyran Power Member

    Já tentaste com a a função popen?
    cumpzz
     
  3. Consu

    Consu Power Member

    Se a memória não me falha, sempre que queres introduzir aspas dentro de aspas podes fazê-lo da seguinte forma:
    Código:
    execlp("cat","cat","/proc/cpuinfo"," | ","awk ' {printf\"#\" $0}'",NULL);
    
    \" para " e para o \ tem de ser \\. Creio que em C é assim que se faz.
     
  4. r3pek

    r3pek Power Member

    mas k mania é esta agora de usar comandos do sistema para solucionar problemas? fogo isto é um programa da tanga que se faz com 1 printf e um fread. desculpa tar a dizer isto na tua thread mas já ando a ver bastantes threads que em vês de fazerem o código preferem usar o execlp ou parecidos. este tipo de código tem falhas de segurança e cria dependencias externas aos programas k estamos a criar. por acaso o awk e o cat até vêm em todas as distros, mas imagina k ey não kero o awk para nd, já o teu programa não funciona e isso não me parece muito bem.....

    Mas pronto isto sou só eu.... :S
     
  5. CoolMaster

    CoolMaster Power Member

    Se o r3pek não tivesse dito o que disse, eu diria eu.. portanto subscrevo! Isso assim já nem programação é.
     
  6. ... e que tal em vez de apenas criticarem o vorenus, darem-lhe uma mãozinha?

     
  7. vorenus

    vorenus Power Member

    e explicar como fazes isso? ou tenho que adivinhar?


    @para os que responderam: obrigado
     
  8. slack_guy

    slack_guy Power Member

    - abrir /proc/cpuinfo
    - ler
    - fechar

    onde está a dúvida? :-)
     
  9. vorenus

    vorenus Power Member

    a duvida esta que para fazer isso (pelo que me ensinaram) atraves de um programa é necessario usar o execlp....
     
  10. r3pek

    r3pek Power Member

    bem, só tou a responder desta maneira pk parece que há pessoal que não consegue pensar um bocadinha e ver como isto é básico... e muito mais facil do que andar a usar exec's.....

    Código:
    #include <stdio.h>
    
    int main(void) {
            FILE *fd = fopen("/proc/cpuinfo", "r");
            char linha[512];
    
            while (fgets(linha, 512, fd) != NULL)
                    printf("#%s", linha);
    
            fclose(fd);
            return 0;
    }
    papinha toda feita.
     
  11. r3pek

    r3pek Power Member

    alguém te desensiou MUITO mal....
     
  12. vorenus

    vorenus Power Member

    obrigado por me dares a papinha toda...

    e ja agora PARABENS por saberes tudo...

    ninguem te obriga a ajudar.. se nao keres nao ajudes... mas escusas de ser arrogante....

    desculpa seres tu a ouvir... mas ja nao é a primeira vez que vejo nas threads em que alguem pede ajuda e vao pra la uns chicos espertos.. armarem-se em herois a "gozar" com quem pediu ajuda!!!
     
  13. r3pek

    r3pek Power Member

    nao me tou a armar em heroi nem coisa nenhuma e se fores ver os meus outros posts ves que não costumo ser assim.
    no meu primeiro post nesta thread dei-te logo duas dicas e se tu não sabias do que eu estava a falar, investigavas.
    ninguem é obrigado a saber tudo, mas também ninguem obriga ninguem a ser preguiçoso.
     
  14. slack_guy

    slack_guy Power Member

    Mas porquê através de um 'programa'? É o processo normalíssimo de abrir, ler e fechar um ficheiro. O meu erro, se calhar, foi pensar que sabias abrir ficheiros. Sorry.
     
  15. vorenus

    vorenus Power Member

    eu sei manipular ficheiros... o meu problema foi na consola tentei abrir o /proc/cpuinfo com o gedit ... e ele deu.me um ficheiro em branco...

    logo pus de parte tentar manipular o ficheiro pra receber os dados e pressupus (e mal) que so daria pra abri-lo com o cat ...
     
  16. slack_guy

    slack_guy Power Member

Partilhar esta Página