[so] [Tema1][Windows]Sistem de fisiere
Voicu Alexandru - Teodor
voicualexandruteodor at gmail.com
Thu Mar 12 22:10:33 EET 2009
la punctele 5 si 6 vezi ca sh -c whoami ,respectiv sh -c "whoami --help"
rezolva problema
2009/3/10 Flamaropol Daniel <raptorclw at gmail.com>
> Salut si mersi pentru raspuns!
>
> Am dat exemplul cu pwd tocmai pentru ca este cel mai simplu. Pentru a
> ajunge la modul cum folosesc GetCurrentDirectory() voi arata mai multi
> pasi din executia si testarea temei :
>
>
> 1. Masina virtuala accesata prin ssh, direct in cygwin.
>
> 2. Pornit Tema1.exe
> **.1.Tema acceseaza directorul curent pentru a sti cu ce parametrii sa
> porneasca procesele copii ( il iau cu GetCurrentDirectory() si il
> stochez local. Aceasta este primul si ultimul apel al acestei functii)
>
> 3.O simpla comanda cd _ceva_
> **.1. Tema incearca sa faca urmatoarele 2 operatii, in speranta ca una
> dintre ele va fi intoarce true :
> **.2. SetCurrentDirectory(currentPath + _ceva_)
> **.3. SetCurrentDirectory(_ceva_)
> **.4. Daca vreuna dintre ele intoarce true, inseamna ca directorul
> respectiv exista si voi face schimbarea.
>
> 4.O simpla comanda echo "ceva" > /tmp/fisier.txt
> **.1 Tema incearca sa creeze fisierul folosind CreateFile()
> **.2 CreateFile() intoarce CANNOT_FIND_FILE
>
> 5.Comanda whoami
> **.1 Tema intoarce "Administrator"
> **.2 comanda scrisa in afara temei (prin ssh) intoarce
> "scarlet/administrator"
>
> 6.Comanda whoami --help
> **.1 Tema intoarce "Incorrect syntax, try whoami /? instead"
> **.2 comanda scrisa in afara temei ( prin ssh ) intoarce help-ul lui whoami
>
>
> Concluzii :
> 1. Pentru Windows, sistemul de fisiere virtual cygwin nu exista.
> 2. Daca exista o functie ( echo, whoami, etc ) care exista deja in
> Windows, aceea va fi apelata prima, si nu echivalentul ei din cygwin.
> Aceasta poate induce probleme cu numarul de parametrii, formatul lor si
> poate chiar modul de executie al comenzii.
>
>
> Comentarii :
> La punctul 2, am avut surpriza sa observ ca executabilul compilat pe
> masina mea locala ( in mod suprinzator, tot Windows Server 2003 R2 ) nu
> executa pe masina virtuala ( "Permission Denied", desi am incercat sa ii
> modific drepturile, etc ). In schimb cel compilat pe masina virtuala
> ruleaza fara probleme.
>
> La punctul 3, orice nu contine un path valid windows nu este recunoscut
> de SetCurrentDirectory(). presupunand ca o comanda de tipul "cd
> /tmp/ceva" se executa corect prin ssh, dupa ce intru in mini-shell, ea
> esueaza.. in schimb comenzile de tipul "cd c:/cale/care/exista" vor
> merge intotdeauna.
>
> La punctul 4, CreateFile() poate crea orice fisier pe care de exemplu
> l-as putea crea din notepad ( folosind deci sistemul de fisiere de
> dedesubt, din windows) dar refuza cu desavarsire sa recunoasca caile
> cygwin. ( Exemplu : intru in cygwin , scriu notepad si astfel obtin o
> aplicatie deschisa de cygwin, teoretic in mediul propriu de fisiere.
> save as ma duce in caile standard Windows, daca scriu ceva de genul
> "/tmp/a.txt" bineinteles ca nu il va recunoaste. Ei bine, si tema mea se
> comporta la fel).
>
> Practic, nu stiu ce sa ii fac cygwinului sau functiei CreateProcess
> astfel incat noile comenzi sa fie executate in mediul lui si nu in
> mediul nativ Windows.
>
> In mod normal, as sugera testarea fara cygwin ( practic pastrand
> functionalitatea comenzilor ls, grep, etc, dar pierzand caile tipice
> linux , /etc/services ). Stiu insa ca temele de anii trecuti au mers
> corectate asa, deci evident nu fac eu ceva bine. Trebuie sa apelez
> intr-un anumit fel CreateProcess, sau aplicatia nu porneste
> corespunzator ? M-am gandit ca s-ar putea sa fie ceva legat de modul cum
> aplicatia mea mosteneste ( sau nu ) anumite atribute de la aplicatia
> parinte (cygwin) dar nu am reusit sa fac nimic in legatura cu asta.
>
> Nu as fi atat de insistent daca tema mea nu ar merge perfect pe testele
> 01-15, daca fac manual urmatoarele schimbari :
> 1. whoami --help ==> whoami /?
> 2. /tmp ==> C:\Temp ( si toate celelalte path-uri redirectate catre
> foldere sau fisiere text care exista, dupa caz )
> 3. $USER ==> $OS ( windows nu defineste default $USER )
> 4. TOATE apelurile de tipul "./ceva" in apeluri de tipul "ceva"
>
> Multumesc daca ati citit pana aici
> Numai bine,
> Dani
>
>
>
>
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20090312/72ac902c/attachment.html
More information about the so
mailing list