programacao C em linux

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:
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.
 
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 ?

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
 
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

e explicar como fazes isso? ou tenho que adivinhar?


@para os que responderam: obrigado
 
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.
 
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.

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!!!
 
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!!!

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.
 
a duvida esta que para fazer isso (pelo que me ensinaram) atraves de um programa é necessario usar o execlp....
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.
 
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.

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 ...
 
Back
Topo