Hola buenas, estoy programando una minishell para ir probando con esto de c. Estoy programando en debian con gcc 4.4 .
El comando que estoy intentando emular es grep "model name" < <input_file> .
El caso es que no consigo hacerlo bien. No tiene mucho misterio, pero creo que me hago un lío con la función dup2(). Creo que no redirecciono bien las salidas, pero por mas que leo en internet no entiendo porque esta mal.
Les dejo solo un main() con la función. Antes de meterlo en la minishell, programo los comandos en "módulos" diferentes hasta que funcionan debidamente.
Gracias de antemano, cualquier ayuda es bien recibida. Saludos
El comando que estoy intentando emular es grep "model name" < <input_file> .
El caso es que no consigo hacerlo bien. No tiene mucho misterio, pero creo que me hago un lío con la función dup2(). Creo que no redirecciono bien las salidas, pero por mas que leo en internet no entiendo porque esta mal.
Les dejo solo un main() con la función. Antes de meterlo en la minishell, programo los comandos en "módulos" diferentes hasta que funcionan debidamente.
Gracias de antemano, cualquier ayuda es bien recibida. Saludos
Código [Seleccionar]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int pid=0;
int sys_call_response=0;
int my_pipe[2];
int fd=0;
int main()
{
char input_file[20];
scanf("%s", input_file);
fd =open(input_file, O_CREAT | O_RDWR, 0666);
char *arguments[3] = {"grep","model name",NULL};
pid = fork();
if(pid==0)
{
dup2(fd,1);
sys_call_response = execvp(arguments[0], arguments);
exit(0);
}
else wait(NULL);
return 0;
}