Ciao a tutti ragazzi,spero possiate risolvermi questo piccolo problema.
In pratica ho fatto un programma che esegue la redirezione di una pipe (di due comandi:ifconfig e grep) in un file.
In un secondo momento dovrei prendere da quel file solo un pezzo,ma non riesco a farlo.
Qualcuno può darmi qualche suggerimento??
codice:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
void visualizza_contenuto();
int main()
{
int fd[2];
int pid,pid1, status,fl;
char buff[10];
pipe(fd);
pid=fork();
if(pid==0)
{
close(fd[1]);
dup2(fd[0],0);
close(fd[0]);
close(1);
fl=creat("nuovo",S_IWUSR | S_IRUSR);
execlp("grep","grep","-A1","wlan",NULL);
exit(0);
}
pid=fork();
if(pid==0)
{
close(fd[0]);
dup2(fd[1],1);
close(fd[1]);
execlp("ifconfig","ifconfig",NULL);
exit(0);
//waitpid(pid,NULL,0);
}
else{
printf("sono il padre\n");}
close(fl);
//close(fl);
sleep(2);
visualizza_contenuto();
}
void visualizza_contenuto()
{
int fp,pid,status;
char buff[20];
int cont=0;
//pid=fork();
//if(pid==0){
fp=open("nuovo",O_RDWR);
if(fp==-1){
printf("errore apertura file\n");
}
lseek(fp,18,SEEK_SET);
read(fp,buff,20);
printf("%s\n",buff);
close(fp);
while(buff[cont]!=' '){
cont++;
}
buff[cont]='\0';
printf("la nuova stringa è %s\n",buff);
}