Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

1. Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

Fábio
fabbio204

(usa Ubuntu)

Enviado em 29/11/2012 - 16:40h

Em python existe um recurso assim, você exeuta um comando parecido com system, mas ele não mostra nada no terminal, existe algo parecido em C


  


2. Re: Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

???
gokernel

(usa Linux Mint)

Enviado em 30/11/2012 - 12:52h

em C se vc nao quiser ver a saida no console é só desligar o monitor . ahhhaah, brincadeira ;) ...

ou use popen:
http://www.pubs.opengroup.org/onlinepubs/009695399/functions/popen.html

OBS: ele so mostra algo no console se vc mandar: ... while (fgets ...) ...


3. Re: Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/11/2012 - 15:46h

Mas, gokernel, a função de popen() não é de evitar que a saída do comando seja mostrada, mas sim de dar um canal para fluxo de dados unidirecional entre o processo pai e o comando que ele vai disparar (ou vice-versa). Pode até ser que o usuário queira exatamente isso, mas não foi o que ele pediu.

Para simplesmente desprezar a saida do comando, pode-se embutir um "> /dev/null 2>/dev/null" ao final da linha de comando passada a system(), já que ela, por definição, será interpretada pelo shell "/bin/sh" (no Windows, o shell deve ser o CMD.EXE, e um ">NUL:" deve produzir o mesmo efeito).

Eu, porém, não gosto muito de usar system(). Geralmente eu prefiro chamar alguns do mesmos componentes do sistema que ela chama internamente (fork(), uma das funções da família de exec() no processo filho, e uma da família de wait() no processo pai), para consumir menos recuros (por exemplo, eu chamo o comando sem submetê-lo ao shell) e ter sobre eles maior controle. Como parte desse maior controle, eu poderia, antes de chamar exec(), fechar ou redirecionar para "/dev/null" os descritores de arquivo referentes à saída padrão de dados ou saída padrão de erros.


4. Re: Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

???
gokernel

(usa Linux Mint)

Enviado em 30/11/2012 - 16:56h

pelo que entendi ele queria algo similar a funcao "system" sem mostrar nada no terminal ... foi exatamente isso que informei.

espero nao esta errado.


5. Re: Existe algum modo de usar o comando system em Linguagem C sem que a saída do comando seja impressa n

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/11/2012 - 17:17h

A função popen() é que a se costuma usar para implementar algo equivalente a uma pipeline do shell (por exemplo, um shell rudimentar poderia usar popen("more", "w") para realizar o pipe do comando "ls | more").

Você pode dar exemplo do código que tinha em mente?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts