kemistry
03-07-2008, 12:56
Ciao a tutti
Ho un piccolo problema con questo programma:dopo aver effettuato la redirezione,dovrei continuare a lavorare sul programma e prendermi solo una stringa del file risultante dalla redirezione,ma non ci riesco.Dove sbaglio?
#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);
}
close(fl);
//close(fl);
sleep(2);
visualizza_contenuto();
}
void visualizza_contenuto()
{
int fp,pid,status;
char buff[20];
int cont=0;
int n;
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);
}
Ho un piccolo problema con questo programma:dopo aver effettuato la redirezione,dovrei continuare a lavorare sul programma e prendermi solo una stringa del file risultante dalla redirezione,ma non ci riesco.Dove sbaglio?
#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);
}
close(fl);
//close(fl);
sleep(2);
visualizza_contenuto();
}
void visualizza_contenuto()
{
int fp,pid,status;
char buff[20];
int cont=0;
int n;
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);
}