[C] Exec-Servidor

JomarC

Power Member
Ora boas srs. Engenheiros :)

Precisava de uma ajudinha vossa!

E o seguinte tenho um analisador (flex e bison)....e um servidor (linguagem C)...basicamente o que eu tava a pensar era sempre que um cliente se liga (faz fork) um queria fazer um exec em que chamava o analisador....nao sei se e o melhor procedimento, mas foi o que me surgiu! lol


Como e que faço isso?

Simulo o que escrevo na consola para correr o analisador?


Desde ja um Obrigado

Cumps
 
não percebi bem a tua pergunta

explica melhor o cenário de utilização para te poder ajudar.


mas o que queres é executar um "programa" depois de fazer um fork ?

Cumprimentos
 
Exactamente!

Ou seja

eu para correr o meu analisador tenho que escrever na consola:

bison -d programa

flex ....

gcc....

basicamente eu queria por isso num exec!

não sei se e possivel..
 
E assim eu tou a fazer algo parecido co isto:

#define EXEC_ARG_0 ("./b") - bison
#define EXEC_ARG_1 ("./f") - flex
#define EXEC_ARG_2 ("./c") - gcc
.
.
.

void do_exec()
{
/* simply list the arguments in order */
execlp(EXEC_ARG_0, EXEC_ARG_1,EXEC_ARG_2, NULL );

}

e depois do fork do cliente entrar em simplesmente faço:

do_exec();

A questao e que agora quando eu faço:

./teste<dados.txt>resultado.xml

Este dados e ficheiro variavel....ou seja....tanto pode ser o dados.txt como o techzone.txt.....agora encalhei! lol
 
por que razao um makefile? n percebi... a ideia é chamar o exec com os tais parametros certo? logo nao se pode usar um makefile... tenho algumas duvidas se podes chamar assim o execlp... esses ./ é o pretendes ir buscar a consola??
 
Exactamente!

Os comandos em cima sao o que eu pretendo ir buscar para o executavel

que makefile? Se desse com makefile ja tinha feito...
 
mas nao podes chamar os 3 comandos ao mesmo tempo... primeiro um execl termina a execucao do processo logo é necessario que o execl seja executado num filho...depois o que podes fazer é executar o primeiro programa se executar mandas fazer o segundo se executar mandas fazer o terceiro...podes fazer isso com o wait() ou waitpid()...
n sei se percebi bem se é isto que pretendes
 
acho q ja percebi a coisa...do tipo

os comandos:

bison -d....

flex....

gcc....

faxo na consola....e gero o executavel.....do tipo ./teste<dados.txt

e no exec do servidor chamo so o executavel em cima..

e ja so preciso de fazer um execl

como e que eu chamo o execl?

execlp(...); ??
 
eu em servidores percebo pouco...sei chamar em linux...o k sera parecido ou igual

execlp(localizacao do programa,argumento1,argumento2,NULL);
 
eu em servidores percebo pouco...sei chamar em linux...o k sera parecido ou igual

execlp(localizacao do programa,argumento1,argumento2,NULL);

E igual meu! lol

o que puses te eu ka sei :) da ai um exemplo da localizaçao e dos argumentos...lol

faz de conta que o comando a chamar e mesmo este:

./teste<dados.txt
 
primeiro porque estas a redirecionar ?
se posse para redirecionar a saida para um ficheiro teria que ser ao contrario a <
isso n te vai dar erro?

tipo o programa tera que estar em algum lado ...imaginado /usr/bin/teste1 por exemplo(pode ser tambem esse ./ acho)

assumindo que ele tem um parametro -h em que chama a ajuda do programa...
sera algo do tipo
execlp("/usr/bin/teste1","-h",NULL);
se n tiver qualquer tipo de argumentos fica so:
execlp("/usr/bin/teste1",NULL);
 
Estou a redirecionar pelo seguinte:

Do cliente vem um url....do tipo /home/datafolder/ola.txt

Eu abro esse o url e mando o todo o conteudo para o ficheiro dados.txt....porque?

Porque pode ser qq url....e assim o dados.txt tem sempre o conteudo do url recebido e e sempre o mesmo ficheiro analisar.

E depois do parser vai la gerar um ficheiro XML

Obrigado pela explicaçao do exec :)
 
Back
Topo