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

zecapistolas

Script C++ / PL

16 mensagens neste tópico

Boas Pessoal,  :)

Tou a desenvolver uma interface gráfica em OpenGL, para um jogo que fiz em ProloG.... através de socket's e tal, consegue-se fazer a ligação entre as duas plataformas....  :ipool:

Mas agora precisava de uma ajudazinha.... Antes de iniciar a aplicação tenho k abrir o ficheiro ProloG, consultar o ficheiro (é tipo compilar) e escrever "server." para iniciar o servido, depois disso posso correr a aplicação em C++....

E eu queria optimizar isso.... Queria, um script acho eu, para o C++ conseguir fazer esse trabalho (de iniciar o ProloG e escrever "server.") por mim....

Para abir um ficheiro é o comando "system(nome_do_ficheiro);", mas assim nao abre o ficheiro com o programa que eu quero, nem me faz essas cenas d iniciar o server....

Acham que isso é possivel?!

cumps  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

C++ não é uma linguagem de scripting :) isso é ofensivo para a própria linguagem ::D

Que queres dizer com "não abre o ficheiro com o programa que eu quero"? Se tiveres o executável (hipoteticamente chamado "jogo.exe") na mesma directoria que o programa em C++, e fizeres system("jogo.exe");, o jogo não é lançado?

Para escreveres a tal string "server" possivelmente precisarás de pipes... que já não são da minha competência ::)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

C++ não é uma linguagem de scripting :D isso é ofensivo para a própria linguagem ::)

Que queres dizer com "não abre o ficheiro com o programa que eu quero"? Se tiveres o executável (hipoteticamente chamado "jogo.exe") na mesma directoria que o programa em C++, e fizeres system("jogo.exe");, o jogo não é lançado?

O ficheiro tem a extensão .pl de ProloG, e á dois programas que abrem isso tipo de ficheiros o Swi-ProloG (é mais editor), e o SICStus ProloG (é uma consola para o ProloG).... e eu queria obrigar esse ficheiro .pl a abrir com o SICStus, porque só assim é que posso correr o server...

Para escreveres a tal string "server" possivelmente precisarás de pipes... que já não são da minha competência ::D

Tive a pesquisar um pouco na net, e se calhar o que preciso mesmo é de chamar o C++ no ProloG e nao o contrário... Alguma ajuda?!

cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O ficheiro tem a extensão .pl de ProloG, e á dois programas que abrem isso tipo de ficheiros o Swi-ProloG (é mais editor), e o SICStus ProloG (é uma consola para o ProloG).... e eu queria obrigar esse ficheiro .pl a abrir com o SICStus, porque só assim é que posso correr o server...

Tens que assegurar que os ficheiros .pl estão associados a esse programa. Supostamente é como devia ficar após a instalação dos runtimes do Prolog, é como fica para o perl, e é como funciona em Linux. Se estão associados ao editor, altera a associação no S.O.

Tive a pesquisar um pouco na net, e se calhar o que preciso mesmo é de chamar o C++ no ProloG e nao o contrário... Alguma ajuda?!

Eu diria que não: O programa em C++ é que precisa do de Prolog para funcionar.

Francamente, pipes parecem-me a melhor solução. Não te posso é ajudar com a sua implementação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu diria que não: O programa em C++ é que precisa do de Prolog para funcionar.

Francamente, pipes parecem-me a melhor solução. Não te posso é ajudar com a sua implementação.

Primeiro tenho que iniciar o server em ProloG, só depois é k corre o C++.... Dai eu pensar que se calhar é melhor chamar o C++ em ProloG e não o contrário....

Ou seja, assim só preciso é de saber como chamar .exe no ProloG....

cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, já tá resolvido o problema....

Fiz um ficheiro .bat, e tá o problema resolvido....

cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, reabrindo o tópico....  :biggrin:

Tenho em mãos outro projecto em Prolog e interface em C++, e como agora estou em Linux queria fazer uma coisa mais bonitinha do que um simples .bat....

Já experimentei system(nome do programa que quero chamar), mas isso não me permite iniciar uma aplicação com argumentos...

Alguma dica?!

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Linux usas o fork() e a família de funções exec*(). :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Linux usas o fork() e a família de funções exec*(). :thumbsup:

Já tive a ver algumas coisas sobre o fork, mas não percebi nada.... Processo do pai e depois do filho, etc  :wallbash: ....

Preciso que o C++ me abra uma nova janela do gnome-terminal, para isso preciso de criar uma novo filho?! E dp digite lá dois comandos....

Ou seja,

-> abrir gnome-terminal

-> cd Desktop/proj/src/

-> gprolog < instrucoes.txt

Como faço isto?!  :-[

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se for por essa ideia de criar um processo para o pai e para o filho, etc....

O que realmente preciso é, ao estar a correr o processo pai (Aplicação Principal) é criado ao mesmo tempo um processo filho (o tal que abre uma nova consola)....

Mas estou com muitas dúvidas de como faço isto....  :(:P

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O mais fácil é teres simplesmente um shell script que faça o que tu queres. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz este pequeno exemplo:

#!/bin/bash
# Shell Script

Principal() {
clear
echo "                   Shell Script"
echo "------------------------------------------"
echo " "
echo "-> Aplicacao..." ; Aplicacao
echo " "
echo "-> A iniciar servidor... " ; Servidor
echo " "
echo "-> Fim."
}
Aplicacao() {
clear
./main
}
Servidor() {
gnome-terminal
gprolog < teste.txt
}
Principal

Dúvidas:

-> Como faço para mandar executar a função "Aplicacao" e "Servidor" ao mesmo tempo?

-> Na função "Servidor" o segundo comando não é executado na nova janela de terminal, como ponho a executar na nova janela inicializada?

cumps  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para inicializar várias aplicações, tens de executar em background, utilizando o & no fim do comando.

Fazes assim:

./app &

Quanto à outra questão, tens de passar o comando que queres executar como argumento ao gnome-terminal. Nunca fiz nada do género, mas olhando para a manual page parece fácil.

http://pwet.fr/man/linux/commandes/gnome_terminal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é uma aplicação WxWidgets, não preciso de abrir uma nova consola para executar o gprolog, posso executar na mesma.... Mas sim, com a opção -e podemos enviar parametros para o gnome-terminal....

Bom, isto parece estar feito.... Só mais uma pequena coisinha, sei que o output de um comando dá para redireccionar para um ficheiro, mas o que desejava era não haver output quando executo o comando "gprolog < comandos_gprolog"....

Se não está sempre a aparecer lixo da execução do gprolog e não fica bem....

cumps  :thumbsup:

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