View Full Version : programacao C em linux
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:
cat /proc/cpuinfo | awk '{print "#" $0}'
mas com o execlp da conflito com as aspas e plicas... pois deveria ficar
execlp("cat","cat","/proc/cpuinfo"," | ","awk ' {printf"#" $0}'",NULL);
alguem me sabe dizer como resolver este problema?
ou uma alternativa ?
Já tentaste com a a função popen?
cumpzz
Se a memória não me falha, sempre que queres introduzir aspas dentro de aspas podes fazê-lo da seguinte forma:
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:
cat /proc/cpuinfo | awk '{print "#" $0}'
mas com o execlp da conflito com as aspas e plicas... pois deveria ficar
execlp("cat","cat","/proc/cpuinfo"," | ","awk ' {printf"#" $0}'",NULL);
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
CoolMaster 13-11-2007, 10:46 Se o r3pek não tivesse dito o que disse, eu diria eu.. portanto subscrevo! Isso assim já nem programação é.
... e que tal em vez de apenas criticarem o vorenus, darem-lhe uma mãozinha?
...
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
e explicar como fazes isso? ou tenho que adivinhar?
@para os que responderam: obrigado
slack_guy 13-11-2007, 19:29 e explicar como fazes isso? ou tenho que adivinhar?
- abrir /proc/cpuinfo
- ler
- fechar
onde está a dúvida? :-)
- abrir /proc/cpuinfo
- ler
- fechar
onde está a dúvida? :-)
a duvida esta que para fazer isso (pelo que me ensinaram) atraves de um programa é necessario usar o execlp....
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.....
#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.
a duvida esta que para fazer isso (pelo que me ensinaram) atraves de um programa é necessario usar o execlp....
alguém te desensiou MUITO mal....
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.....
#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.
slack_guy 13-11-2007, 20:11 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 ...
slack_guy 14-11-2007, 00:22 http://www.linfo.org/proc_cpuinfo.html
$ man proc
"On a UNIX system, everything is a file; if something is not a file, it is a process." ;-)
|
|