Up ! System

Ce programme présente l'usage du système de fichiers du système d'exploitation, les alarmes et la gestion des processus.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/syswin.upl ou ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/sysunix.upl.

Mode compilé

Commande de compilation

upscmp Source=system.upl

Commande d'exécution

system

Mode interprété

upssng Source=system.upl

Fichier source

Source Composant "Exemple d'emploi de Up ! System" Version 4.0.0;

ImporterModule
/************/
Variable
/******/
Fonction MonAlarme() Retourner Booleen
/************************************/
Debut
Ecran.Ecrire("Date="+Caractere(DateSysteme(),"%HH:%Mi:%S"));
Retourner ++NbAlarmes<3;
Fin Fonction

Fonction EcrireEntree() Retourner Nul Ou Caractere
/************************************************/
Debut
Retourner Nul;
Fin Fonction

Procedure LireSortie(M : Caractere)
/*******************************/
Debut
Ecran.Ecrire(M);
Fin Procedure

Principal
/*******/
Variable
/******/
Debut
Ecran.Ecrire("NomNoeud="+NomNoeud);
Ecran.Ecrire("NomMachine="+NomMachine);
Ecran.Ecrire("NomProgramme="+NomProgramme);
Ecran.Ecrire("NomUtilisateur="+NomUtilisateur);
Ecran.Ecrire("NomGroupe="+NomGroupe);
Ecran.Ecrire("NumeroProcessus="+Caractere(NumeroProcessus));
Ecran.Ecrire("NumeroGroupe="+Caractere(NumeroGroupe));
Ecran.Ecrire("NumeroUtilisateur="+Caractere(NumeroUtilisateur));
Ecran.Ecrire("SystemeDExploitation="+SystemeDExploitation);
Ecran.Ecrire("SeparateurRepertoire="+SeparateurRepertoire); Ecran.Ecrire("UpsHome="+UpsHome);
Ecran.Ecrire("UpsPath="+UpsPath);
Ecran.Ecrire("UpsUser="+UpsUser);

Alarme(MonAlarme, 10, Vrai);
Ecran.Ecrire("On attend 40 secondes");
Attendre(40.0);
Ecran.Ecrire("Fin de l'attente");

Ecran.Ecrire("Aleatoire()="+Caractere(Aleatoire()));
Ecran.Ecrire("BornerRepertoire('/tmp')="+BornerRepertoire("/tmp"));
ChangerEnvironnement("UPS_ESSAI", "Bonjour le monde");
Ecran.Ecrire("LireEnvironnement(UPS_ESSAI)="+LireEnvironnement("UPS_ESSAI"));
Ecran.Ecrire("LireEnvironnement(PATH)="+LireEnvironnement("PATH"));
ChangerPriorite(5);
Ecran.Ecrire("LirePriorite()="+Caractere(LirePriorite()));
ChangerPriorite(4);
C=Crypter("XYZT", "Bonjour le monde");
Ecran.Ecrire(C);
Ecran.Ecrire(Decrypter("XYZT", C));

CreerRepertoire("/tmp2");
CreerFichier("/tmp2/essai.txt");
Si IlExisteRepertoire("/tmp2") Alors Fin Si
Si IlExisteFichier("/tmp2/essai.txt") Alors Fin Si ChangerDroitsDAcces("/tmp2/essai.txt", DroitLectureEcriture, DroitLecture, DroitLecture);
Selon LireDroitsDAcces("/tmp2/essai.txt", ?, ?) Faire Fin Selon
CopierFichier("/tmp2/essai.txt", "/tmp2/essai.sav");
RenommerFichier("/tmp2/essai.sav", "/tmp2/essai.bak");
SupprimerFichier("/tmp2/essai.bak");
CopierRepertoire("/tmp2", "/tmp3");
SupprimerRepertoire("/tmp2");
RenommerRepertoire("/tmp3", "/tmp2");
SupprimerRepertoire("/tmp2");
Si IlExisteRepertoire("/tmp2") Alors Fin Si
Si IlExisteFichier("/tmp2/essai.txt") Alors Fin Si
ChangerRepertoireCourant("/tmp");
Ecran.Ecrire("RepertoireCourant="+LireRepertoireCourant());
Ecran.Ecrire(RechercherFichierDansChemin(LireEnvironnement("notepad", "PATH"), "exe"));

?=Executer("notepad.exe", Faux, Faux, P);
Attendre(10.0);
ArreterProcessus(P);

CommandeLink=RechercherFichierDansChemin(LireEnvironnement("link", "PATH"), "exe");
Ecran.Ecrire("link.exe="+Caractere(Executer(CommandeLink+" /help",Vrai,Vrai,P)));
?=Executer(CommandeLink+" /help",Faux,Faux,P);
Attendre(10.0);
Si LireCodeRetour(P,CR) Alors Fin Si

?=Executer(CommandeLink+" /help", Vrai, Vrai, P, Nul, EcrireEntree, LireSortie);

Ecran.Ecrire(LireEnvironnement("HKEY_LOCAL_MACHINE/software/UpCompany/ups/UPS_HOME2"));
Ecran.Ecrire("Taille autoxec.bat=" + Caractere(LireCaracteristiquesFichier("c:/autoexec.bat")));
Ecran.Ecrire("Taille autoxec.bat=" + Caractere(LireCaracteristiquesFichier("c:/autoexec.bat", UtilisateurProprietaire, GroupeProprietaire, DateDernierAcces, DateDerniereModification, DateCreation, EstCache)));
Ecran.Ecrire(UtilisateurProprietaire);
Ecran.Ecrire(GroupeProprietaire);
Ecran.Ecrire(Caractere(DateDernierAcces));
Ecran.Ecrire(Caractere(DateDerniereModification));
Si EstCache Alors Sinon Fin Si Ecran.Ecrire("\n");

L1=ListerFichiers("c:/", Nul);
Pour FL=L1.ParcoursAuDebut() JusquA L1.DernierElement() Faire Fin Pour
Ecran.Ecrire("\n");

L2=ListerProcessus();
Pour PL=L2.ParcoursAuDebut() JusquA L2.DernierElement() Faire Fin Pour

L3=ListerUnites(Nul);
Pour UL=L3.ParcoursAuDebut() JusquA L3.DernierElement() Faire Fin Pour
Fin Principal

Résultat de l'exécution

NomNoeud=J-DUVAL NomMachine=Intel Pentium NomProgramme=test5 NomUtilisateur=Administrateur NomGroupe= NumeroProcessus=3.908 NumeroGroupe=1 NumeroUtilisateur=1 SystemeDExploitation=Windows NT Work Station SeparateurRepertoire=\ UpsHome=C:\Up\ups100\win95\ups/ UpsPath=${UPS_HOME}\bin;C:\Up\ups100\essai\exe/ UpsUser=duval On attend 40 secondes Date=16:11:15 Date=16:11:25 Date=16:11:35 Fin de l'attente Aleatoire()=22.275 BornerRepertoire('/tmp')=/tmp\ LireEnvironnement(UPS_ESSAI)=Bonjour le monde LireEnvironnement(PATH)=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Oracle\Ora81\bin;"C:\forte_jdk\j2sdk1.4.0\bin";C:\WINDOWS;C:\WINDOWS\COMMAND;"C:\Program Files\Microsoft Visual Studio\VC98\Bin";"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin" LirePriorite()=3 DTOJTqp 1y dTOyI Bonjour le monde Il existe repertoire '/tmp2' Il existe fichier '/tmp2/essai.txt' Lecture, Ecriture et Execution RepertoireCourant=C:\tmp C:\WINDOWS\system32\notepad.exe link.exe=1.100 Code-retour de link.exe=0 Microsoft (R) Incremental Linker Version 6.00.8447 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. usage: LINK [options] [files] [@commandfile] options: /ALIGN:# /BASE:{address|@filename,key} /COMMENT:comment /DEBUG /DEBUGTYPE:{CV|COFF} /DEF:filename /DEFAULTLIB:library /DELAY:{NOBIND|UNLOAD} /DELAYLOAD:dll /DLL /DRIVER[:{UPONLY|WDM}] /ENTRY:symbol /EXETYPE:DYNAMIC /EXPORT:symbol /FIXED[:NO] /FORCE[:{MULTIPLE|UNRESOLVED}] /GPSIZE:# /HEAP:reserve[,commit] /IMPLIB:filename /INCLUDE:symbol /INCREMENTAL:{YES|NO} /LARGEADDRESSAWARE[:NO] /LIBPATH:dir /LINK50COMPAT /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4} /MAP[:filename] /MAPINFO:{EXPORTS|FIXUPS|LINES} /MERGE:from=to /NODEFAULTLIB[:library] /NOENTRY /NOLOGO /OPT:{ICF[,iterations]|NOICF|NOREF|NOWIN98|REF|WIN98} /ORDER:@filename /OUT:filename /PDB:{filename|NONE} /PDBTYPE:{CON[SOLIDATE]|SEPT[YPES]} /PROFILE /RELEASE /SECTION:name,[E][R][W][S][D][K][L][P][X] /STACK:reserve[,commit] /STUB:filename /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]] /SWAPRUN:{CD|NET} /TSAWARE[:NO] /VERBOSE[:LIB] /VERSION:#[.#] /VXD /WARN[:warninglevel] /WINDOWSCE:{CONVERT|EMULATION} /WS:AGGRESSIVE Taille autoxec.bat=493 Taille autoxec.bat=493 0 0 23/04/2004 22:00:00 21/02/2004 19:57:38 N'est pas cache MSDOS.SYS CONFIG.BAK cygwin dos msys forte_jdk Z DELL PAGEFILE.SYS AUTOEXEC.DOS CONFIG.DOS LOGO.SYS SCANDISK.LOG AUTOEXEC.BAK WINDOWS CONFIG.SYS ZZ.EXE OSINFO.FRN autoexec.bat DELL.SDR ZZTOP.BAT autoexec.000 autoexec.lbi boot.ini CHOICE.COM Z2.BAT Program Files ntldr Bootfont.bin io.sys ntdetect.com Up os726865.bin MinGW WUTemp upgrade.htm TEMP tmp Oracle os110707.bin programmes téléchargés My Music BOOTSECT.DOS Documents and Settings Mes documents command.LNK System Volume Information Recycled hiberfil.sys smss.exe 676 5.0003051757813E-2 1.0002136230469E-2 winlogon.exe 772 4.57599639892578 1.50199890136719 services.exe 816 1.82199859619141 0.419998168945313 lsass.exe 828 3.04399871826172 2.10299682617188 svchost.exe 992 0.150001525878906 0.120002746582031 spoolsv.exe 1504 0.139999389648438 0.110000610351563 Explorer.EXE 1696 8.10099792480469 2.50299835205078 fpdisp5a.exe 272 6.9999694824219E-2 1.9996643066406E-2 fppdis2a.exe 280 5.9997558593750E-2 4.0000915527344E-2 AVGNT.EXE 300 0.129997253417969 0.389999389648438 zlclient.exe 288 1.67199707031250 2.11299896240234 WCESCOMM.EXE 320 4.0000915527344E-2 4.0000915527344E-2 AVGUARD.EXE 736 6.43900299072266 30.4530029296875 AVWUPSRV.EXE 732 1.0002136230469E-2 1.0002136230469E-2 mdm.exe 944 4.0000915527344E-2 2.9998779296875E-2 nvsvc32.exe 1032 4.0000915527344E-2 1.9996643066406E-2 tcpsvcs.exe 1076 1.9996643066406E-2 1.9996643066406E-2 vsmon.exe 1124 11.5459976196289 14.8909988403320 wanmpsvc.exe 1420 2.9998779296875E-2 1.0002136230469E-2 MSDEV.EXE 1060 423.838996887207 543.161003112793 test5.exe 3908 0.740997314453125 4.73600006103516 A:\ 0.000000000000000 0.000000000000000 C:\ 1819824.00000000 28983136.0000000 D:\ 0.000000000000000 487534.000000000