• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

markoni

Help em C, redirecionamento

7 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente isso está um pouco confuso.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continuo sem perceber o que queres, especialmente por teres C no tópico..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

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