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

rippp

codigo para abrir uma consola em C

18 mensagens neste tópico

boas, sou iniciante em C, ja tenho algumas bases mas agora estou com uma duvida que me ta a dar dores de cabeça e como tal vim aqui colocar a minha pergunta. Estou a programar um programa que me vai auxiliar na utilizacao de outros programas facilitando a minha vida e a vida de quem o quiser assim que estiver pronto. Para tal preciso que em certa altura do meu programa que ao introduzir certos numeros estes mesmos fossem abrir uma consola e executar um comando. Usei IF..Else para fazer a diferenciaçao e a futura correspondencia aos comandos, nao sei se adianta muito mas estou a usar ubuntu.

Cumprimentos e bom ano atrasado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Precisas mesmo de abrir uma nova consola?

Não te basta executar os comandos que queres numa consola "escondida", e esta consola "escondida" desaprece depois do comando acabar?

Se responderes "sim" à segunda pergunta, a função system deve servir-te.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao a segunda pergunta..preciso de executar os comandos numa nova consola e essa mesma ficar aberta ate se fechada manualmente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então não sei ... nem sei se é possível.

Imagina que o teu programa está a correr na consola propriamente dita (Ctrl+Alt+F1; Alt+F7 para voltar ao Window Manager). Não tens "consolas" para abrir e fechar à vontade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja vi um programa que funcionava assim.. a minha ideia é baseada no aircrack-ng fazer um programa para mim (que ja existe na net chamado airscript-ng) que me vai facilitar a vida. Quando corro o meu programa aparece-me a consola do meu programa com varias indicacoes por ex:

    printf (" 1 - Start or Stop monitor mode \(airmon-ng\)\n" );

    printf (" 2 - Scan \(airodump-ng\)\n" );

    printf (" 3 - Authentication \(aireplay-ng\)\n");

    printf (" 4 - Crack the code \(aircrack-ng\)\n");

    do

    {

    printf ("  Enter the number of your option - ");

  switch (d)

  {

  case 1:

      printf("airmon\n");

      return(0);

            break;

  case 2:

e por ai fora so que para cada case eu nao queria que a ordem dada fosse printf pois isso nao me serve de nada, o que eu queria é que para o Case 1 dando a ordem "1" ele me executa-se o airmon numa outra consola.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boa noite, pois efectivamente ja experimentei a funcao system () e tentando compreender o seu funcionamento, nao apenas experimentar e nao é bem isso que procuro pois system () corre o programa na mesma consola.. Quanto ao fork e cmp tenho andado a investigar na net e ainda nao consegui captar bem como funciona logo ainda nao testei.. Assim que tiver testado comunico aqui a ver se era isso que procuro para o caso de alguem futuramente ter a mesma duvida que tive.

cumprimentos!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou-te dar o peixe, mas espero que leias a man page de fork, exec (e tb recomendo waitpid).

#include <unistd.h>

pid_t
run_terminal(char *cmd)
{
pid_t child_pid;

if (!(child_pid=fork()))
	execlp("gnome-terminal","gnome-terminal","-x",cmd,NULL);

return child_pid;
}

int
main()
{
run_terminal("python");

/* Podes tambem esperar pelo filho aqui com waitpid() */

while (1)
{
	sleep(1);
}

return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

que leitura aconselhas ?

Man pages. Elas contem documentação sobre programas, funções da biblioteca de standard de c (e não so', por exemplo as funções em questão não são da biblioteca standard).

no shell corre:

man fork
man 3 exec

Ja' agora, o codigo fazia aquilo que crias certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz e nao faz... Faz porque realmente abre outra consola e nao faz porque nao executa o comando que eu quero...abre uma consola python ou que e o comando que eu quero nem funciona sequer.. mas tenho que ler qualquer coisa ate entender isso dos fork

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz e nao faz... Faz porque realmente abre outra consola e nao faz porque nao executa o comando que eu quero...abre uma consola python ou que e o comando que eu quero nem funciona sequer.. mas tenho que ler qualquer coisa ate entender isso dos fork

Sim abre uma consola com o python (foi a primeira coisa interactiva que me veio a' cabeça).

E' de ver que a consola fecha-se quando o programa termina (se não queres isso o melhor e' fazeres um shell script que corra o programa e depois peça input).

Se o programa de facto não corre exprementa por o caminho absoluto, para seberes qual podes fazer "whereis prog" na shell.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois realmente ja tinha experimentado fazer isso com o caminho absoluto o que acontece é que a consola abre e fecha logo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois realmente ja tinha experimentado fazer isso com o caminho absoluto o que acontece é que a consola abre e fecha logo...

entao o programa corre!

faz um script, algo do genero:

#! /bin/bash

python
echo "carregue <ENTER> para terminar"
read

e dps corre-lo atraves do run_terminal()

(n te esqueças de tornar o script executavel (chmod 700 script))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

da erro. Em relacao ao meu programa ja o experimentei com varias comandos basicos em vez de python, todos correm mas quando acabam fecham logo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

da erro quando experimento fazer o script porque como ja tinha dito a bocado os programas realmente correm noutra consola mas fecham logo a seguir...

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