Probleme avec shellapi.h

Probleme avec shellapi.h - C++ - Programmation

Marsh Posté le 03-07-2006 à 16:16:53    

J'ai un souci dans l'utilisation de la lib shellapi.h
 
En effet, j'ai besoin de shellexecute dans une de mes méthodes pour lancer une commande du shell.
 
J'ai donc fait comme suit :
 

Code :
  1. #include <ShellApi.h>
  2. ...
  3. //Dans la méthode :
  4. STARTUPINFO         siStartupInfo;
  5. PROCESS_INFORMATION piProcessInfo;
  6. memset(&siStartupInfo, 0, sizeof(siStartupInfo));
  7. memset(&piProcessInfo, 0, sizeof(piProcessInfo));
  8. siStartupInfo.cb = sizeof(siStartupInfo);
  9. if(CreateProcess("conv.bat",
  10.                            0,0,0,FALSE,
  11.                            CREATE_DEFAULT_ERROR_MODE,0,0,                             
  12.                            &siStartupInfo,&piProcessInfo) == FALSE)
  13. {
  14. // erreur
  15. }
  16. else
  17. // attente
  18.    WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
  19.    ::CloseHandle(piProcessInfo.hThread);
  20.    ::CloseHandle(piProcessInfo.hProcess);
  21. }


 
Premier probleme, Shellapi.h n'est pas reconnu sous Solaris, (code concu sous environnement dev c++/windows et que je dois adapter sous solaris 8/unix).
 
Deuxieme probleme, je demande a la méthode de lancer le fichier "conv.bat", ceci est un batch, cependant sous un shell de type solaris, existe t il des "batches" a l'égal des batches windows pour effectuer des commandes directement ?
 
J'espere que j'ai été suffisamment clair. N'hésitez pas à me poser des questions dans le cas contraire.


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 03-07-2006 à 16:16:53   

Reply

Marsh Posté le 04-07-2006 à 09:26:32    

drapal


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 04-07-2006 à 10:19:12    

A priori je dirais que sous solaris, on a affaire à des scripts en .sh, et que les .bat ca ne se trouve que sous windows. Je peux cependant me gourrer.
 
D'autant plus que les outils qu'utiliseront ton batch seront fatalement liés à un OS, soit win, soit solaris.

Reply

Marsh Posté le 04-07-2006 à 10:30:48    

_darkalt3_ a écrit :

A priori je dirais que sous solaris, on a affaire à des scripts en .sh, et que les .bat ca ne se trouve que sous windows. Je peux cependant me gourrer.
 
D'autant plus que les outils qu'utiliseront ton batch seront fatalement liés à un OS, soit win, soit solaris.


Tout à fait, j'ai créé  un sh a la place du batch. Mais pour le probleme de shellapi ? une parade ?


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 04-07-2006 à 14:01:33    

Salut,
Si c'est juste pour lancer une commande du shell, peut etre que la fonction "system"' peut convenir?
 
Sinon solaris je suppose que c'est un peu comme linux, donc un fork() + un "exec" qqch dans le fils?

Reply

Marsh Posté le 04-07-2006 à 14:22:47    

Je ne sais pas si avec la commande system cela fonctionnera. En fait il faut bien attendre que chaque commande soit terminée avant d'en entamer une nouvelle.
 
Or la commande lancant le script est dans une boucle, et sous dos, j'avais ce fameux probleme de chevauchement des applis.  
 
En utilisant un fork, on pourrait s'assurer que cette éventualité peut être évitée ?


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 04-07-2006 à 15:26:23    

Ma foi j'en sais rien, je programme pas sous linux mais je suppose qu'il y a des mecanismes de synchronisation. le mieux est que tu lise la doc.
Fork duplique le processus courant l'original est le pere, l'autre le fils, et une fonction comme "exec..." permette de transformer le processus courant en un autre programme  (groso modo hein les explications!)
 
( http://www.linux-kheops.com/doc/ma [...] ecl.3.html )

Reply

Marsh Posté le 04-07-2006 à 15:32:54    

hmmmm je me demande s'il ne vaut mieux pas creuser au niveau des threads et de l'exclusion mutuelle ...


---------------
Atari 520 ST 256 Ko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed