<div> 1. Un proces primeste de la sistemul de operare parametri. Pentru ca acestia sa ajunga la proces, sunt implicati:</div>
<div> </div>
<div>a) shell-ul (sau cine lanseaza procesul) care trebuie sa "stie" cati parametri sunt si ce valoare au</div>
<div> </div>
<div>b) API-ul SO, care e diferit pe Linux fata de Windows in ce priveste modalitatea de a da parametri (vezi documentatia)</div>
<div> </div>
<div>c) procesul in sine, care primeste in main lista de parametri (libraria standard C/C++ face ca acesti parametri sa fie primiti uniform pe toate sistemele de operare; de exemplu, pentru Visual Studio 2003 vezi fisierul "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\crt\src\stdargv.c")
</div>
<div> </div>
<div> Incearca si sa rulezi din bash comenzile:</div>
<div>echo 1 2</div>
<div>echo "1 2"</div>
<div> </div>
<div> Din raspunsul lui Tavi si cele de mai sus ar trebui sa fie mai clar de ce se intampla asa in parser.<br><br> 2. Pe langa SetHandleInformation, vezi si parametrul "lpStartupInfo" din CreateProcess; iti ofera o alternativa la modalitatea de redirectare de pe Linux.
</div>
<div> </div>
<div> Max</div>
<div> </div>
<div><span class="gmail_quote">On 8/15/07, <b class="gmail_sendername">Andrei Ivanes</b> <<a href="mailto:andrei.ivanes@gmail.com">andrei.ivanes@gmail.com</a>> wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">1. [WIN] Exista(?) o problema cu parserul (sau nu stiu sa il folosesc calumea):<br><br>daca un parametru este intre apostrofi sau ghilimele, parserul nu imi
<br>da in string-ul parametrului si apostrofii sau ghilimelele, asa ca<br>daca ii dau de exemplu:<br><br>echo 'int main() { return 0; }'<br><br>nu imi dau seama daca parametrul 'int main() { return 0; }' extras de
<br>parser are sau nu apostrofi sau ghilimele, iar shell-ul meu o sa<br>ruleze:<br><br>echo int main() { return 0; }<br><br>2. [WIN] O nelamurire la Pipe-uri: din ce am inteles trebuie inchis<br>(cel putin) capatul de scriere de catre procesul parinte, altfel
<br>procesul care are capatul de citire din pipe nu termina* (adica<br>ReadFile tot asteapta pentru ca handle-ul la capatul de scriere in<br>pipe inca mai este deschis de procesul parinte, adica shellul meu). Am<br>inteles ca ar trebui facut cu DuplicateHandle, dar imi pare un fel de
<br>problema chicken and egg:<br><br>DuplicateHandle imi cere ca parametru procesul in care sa il copiez,<br>care imi este dat de CreateProcess, caruia ii dau ca parametru la<br>hStdInput sau hStdOutput unul din capetele pipe-ului duplicat.
<br><br>Care e solutia?<br><br>--<br>--<br>Multumesc,<br>Andrei Ivanes 342 C1<br>_______________________________________________<br>so mailing list<br><a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br><a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so">
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br></blockquote></div><br>