Ir para o conteúdo
markoni

Help em C, redirecionamento

Mensagens Recomendadas

markoni    0
markoni

boas,

Pretendo ler o conteudo de um ficheiro pr a console usando o "execvp"(ou outro como este)

tipo:por na console "cat < fich.txt" e que o conteudo do ficheiro apareça no ecra

:::::::::::::::::::::::::::

int fd=open(Arg[2],O_RDONLY,0600);

if (fd==-1){perror("main: exec");return 1;}

execv(Arg[0],Arg[2]);

:::::::::::::::::::::::::::::

onde Arg[2] é o nome do ficheiro e Arg[0] é o comando

exemplo:Arg[2] contem o "fich.txt" e Arg[0] o "cat"

Alguem me diz o que está mal?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

Não consigo perceber o que queres fazer.

Pelo que percebi, não percebes o funcionamento dos pipes.

Ao chamares "prog < file.txt" o file.txt vai-te ser redireccionado para o stdin, pelo que podes fazer as leituras normalmente como se fosses ler do teclado.

Mas a pergunta é capaz de não ser esta..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

Realmente isso está um pouco confuso.

Queres executar um comando recebido pela consola ou queres utilizar pipes no teu programa?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Qual é a ideia de fazer cat < file em vez de cat file?

De qualquer modo, acho que nem são precisas pipes, basta fazer o redireccionamento do input (isso faz-se com um dup2, se não me engano).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
markoni    0
markoni

o objectivo é que o utilizador escreva "cat < fich.txt" e o conteudo do ficheiro apareça no ecra ;) mas tipo em vez do cat eu posso ter outros comandos :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Se podes usar directamente cat file, então o teu único problema está no facto de estares a utilizar mal o execv (e se calhar até era melhor usar um execl ou assim).

Vê a documentação da função, e terás o problema resolvido.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade