<<< DISK$DATA:[NOTES$LIBRARY]VAX_VMS.NOTE;1 >>> -< SIG VAX/VMS >- ================================================================================ Note 1232.0 Doubler SYS$OUTPUT 27 replies DECUSF::FOUCHET_F "François FOUCHET" 9 lines 15-MAR-1991 19:08 -------------------------------------------------------------------------------- Etant d'un naturel faignant (ce qui, parfois, est bien utile), et avant de me lancer dans l'ecriture d'un bout de code, je tente un appel au peuple au travers de la messagerie ... Je cherche un brico capable d'executer un fichier de commande et de diriger sa sortie vers *DEUX* fichiers en meme temps. Le but avoue de la manip est de faire derouler le startup de VMS sur la console systeme *ET* avoir une trace complete de ce qui a ete edite sur OPA0: dans un fichier STARTUP.LOG. Si quelqu'un a deja ca dans ses cartons ... ================================================================================ Note 1232.1 Doubler SYS$OUTPUT 1 of 27 DECUSF::BACH_J "Jean-Pierre BACH - Telecoms Paris" 1 line 15-MAR-1991 19:28 -< >- -------------------------------------------------------------------------------- Buy Unix and put a T on your pipe ! ================================================================================ Note 1232.2 Doubler SYS$OUTPUT 2 of 27 DECUSF::MOULIN_F 17 lines 18-MAR-1991 11:01 -< bidouille... >- -------------------------------------------------------------------------------- voici une maniere de faire testee qui n'est peut etre pas des plus elegante mais qui marche bien. - inclure dans une phase bien appropriee un .com du style : - run/detach get_boot - mbx_boot=f$trnlnm("LNM$SYSTEM","MBX_BOOT") - define sys$output 'mbx_boot' le programme get_boot contient : -la creation de la mailbox et l'assignation du channel -la creation du fichier STARTUP.LOG -une boucle de read sur la mailbox avec ecriture dans startup.log et un $BRKTHRUW sur OPA0: A la fin du startup, j'ai inclu un stop get_boot ================================================================================ Note 1232.3 Doubler SYS$OUTPUT 3 of 27 DECUSF::OURGHANLIA_B "Eppur si muove..." 1 line 19-MAR-1991 10:35 -< Un pipe driver ??? >- -------------------------------------------------------------------------------- Est-ce quelqu'un est interresse par un pipe driver sous VMS ??? ================================================================================ Note 1232.4 Doubler SYS$OUTPUT 4 of 27 DECUSF::LAKS_J "Jacques LAKS - ALTRAN TECHNOLOGIES -" 6 lines 19-MAR-1991 11:31 -< Oui merci >- -------------------------------------------------------------------------------- a .3: Oui, je pense que cela evitera souvent l'utilisation de fichiers temporaires. Merci beaucoup. J.Laks ================================================================================ Note 1232.5 Doubler SYS$OUTPUT 5 of 27 DECUSF::LEGOUX_P "Patrice Legoux GSI Distr." 1 line 19-MAR-1991 11:59 -< kecekca ? >- -------------------------------------------------------------------------------- Sans vouloir avoir l'air curieux qu'est-ce qu'un "pipe driver" ? ================================================================================ Note 1232.6 Doubler SYS$OUTPUT 6 of 27 DECUSF::PERROT_B "IPN Orsay" 13 lines 19-MAR-1991 12:31 -------------------------------------------------------------------------------- > Est-ce quelqu'un est interresse par un pipe driver sous VMS ??? Oui ! > Sans vouloir avoir l'air curieux qu'est-ce qu'un "pipe driver" ? C'est un mecanisme utilise dans U#*&$#X qui permet par exemple de prendre l'input d'une commande comme etant l'output d'une autre. Ca eviterait dans VMS le traditionnel "define/user sys$output xyz.tmp" avant une commande pour pouvoir en analyser le contenu par la suite. C'est une espece de mailbox implicite. A mon avis, s'il fallait retenir quelquechose de U%$#%#X (mais on n'est pas oblige ;-) ), ce serait celle la. ================================================================================ Note 1232.7 Doubler SYS$OUTPUT 7 of 27 DECUSF::JOLIN_R "Rémi JOLIN - T.A.T." 3 lines 19-MAR-1991 12:59 -------------------------------------------------------------------------------- > Est-ce quelqu'un est interresse par un pipe driver sous VMS ??? moi aussi... ================================================================================ Note 1232.8 Doubler SYS$OUTPUT 8 of 27 DECUSF::OURGHANLIA_B "Eppur si muove..." 2 lines 19-MAR-1991 13:14 -< Meme sans les sources ?? >- -------------------------------------------------------------------------------- Cela vous interesse toujours meme si je ne vous donne pas les sources.... ================================================================================ Note 1232.10 Doubler SYS$OUTPUT 10 of 27 DECUSF::KRYSTLIK_JM "Jean-Marc Krystlik - COGESI 39." 8 lines 19-MAR-1991 14:20 -< >- -------------------------------------------------------------------------------- Oui, je prends même sans les sources... Comme cité précedemment, c'est sans doute une des fonctionnalités interessantes de U...X. Merci d'avance JMK ================================================================================ Note 1232.11 Doubler SYS$OUTPUT 11 of 27 DECUSF::PERROT_B "IPN Orsay" 5 lines 19-MAR-1991 16:45 -< oui >- -------------------------------------------------------------------------------- > Cela vous interesse toujours meme si je ne vous donne pas les > sources.... Oui, mais la perenite du produit... est-ce que ca tournera toujours en VMS 8.23-67B (y compris apres application du patch F11XR074U67B_823.A ) ? ================================================================================ Note 1232.13 Doubler SYS$OUTPUT 13 of 27 DECUSF::BROWN_N "Nick BROWN, Conseil de l'Europe" 22 lines 19-MAR-1991 16:55 -------------------------------------------------------------------------------- Our solution to the problem in .0 is to do a minimal amount of startup stuff, then run a detached process to do the rest. In fact this is almost a genuine fork, since there is only one command file (it runs itself /DETACHED). The intention is to AVOID having all this stuff on the console (!). If the minimal stuff (which is not logged) doesn't work, then you know immediately, and the log file (which we tend to look at about a day after rebooting, to see where our stALL-IN-1 mail jobs went to) is not really needed. In contrast, by freeing up the console while the layered products (etc) get started, we can do some work before the users get in. A nice comment I read somewhere was: "Millisecond: unit of time which elapses between VMS STARTUP completing and 128 users logging in". For general use, a pipe driver would be nice, but probably would cause EDT to stop working ( ;;;;;;-) ), so let's proceed with caution. How does DECshell do it ? ================================================================================ Note 1232.14 Doubler SYS$OUTPUT 14 of 27 DECUSF::OURGHANLIA_B "Eppur si muove..." 14 lines 19-MAR-1991 17:30 -< Enjoy... >- -------------------------------------------------------------------------------- See VMS:PIPEDRIVR.EXE and enjoy !! $Copy PIPEDRIVR.EXE SYS$LOADADLE_IMAGES: $Run SYS$SYSTEM:SYSGEN SYSGEN> CONNECT PIPE/NOADAPTER/DRIVER=PIPEDRIVR Il suffit ensuite de creer un canal sur le peripherique PIPE: et la magie de IOC$CLONE_UCB fera le reste. On peut utiliser ce peripherique comme une boite aux lettres. Bientot , VMS/POSIX vous permettra de faire quelque chose comme : sh> dcl 'show system'|grep 'HIB'|wc -l pour compter le nombre de processes en etat HIB sur votre systeme... ================================================================================ Note 1232.15 Doubler SYS$OUTPUT 15 of 27 DECUSF::BACH_J "Jean-Pierre BACH - Telecoms Paris" 21 lines 19-MAR-1991 19:26 -< MAILBOX aménagée ou Full Pipe compatible ? >- -------------------------------------------------------------------------------- Oh Oui! (Si les performances restent comparables à celles d'un fichier temporaire, qu'il faut qd même créer, écrire, fermer, réouvrir, lire et détruire.; note: "comparable" est différent de "identique"). Ca manque vraiment à VMS si on le compare avec un "système concurrent". Il faut qd même éviter le travers de la compatibilité 100% avec ce système qui obligerait à écrire "octet par octet". Dans 99% des cas, une structuration logique en "articles" transmis sur une MAILBOX serait suffisante. Un point faible du système concurrent est quand même le très mauvais débit de la chose (par exemple sur un vieux Vax 780 qui fut la 1ère bécane a supporter le système concurrent en mémoire virtuelle). Actuellement "ils" contournent le point faible du débit des pipes en ajoutant des mips et des mips à leurs "risques". Enfin il existe au catalogue DEC un truc (dont nous avons la chance d'avoir la licence et que finalement nous utilisons assez peu) qui doit s'appeler DEC SHELL et qui semble contenir un driver de pipe compatible, pas très très rapide... Mais je doute qu'il soit sain d'utiliser DECSHELL ets es drivers dans une phase de startup de systeme (pour revenir à la demande initiale) ================================================================================ Note 1232.16 Doubler SYS$OUTPUT 16 of 27 DECUSF::GRACIA_J "José GRACIA - GRL/ELF Lacq" 8 lines 20-MAR-1991 11:03 -< < Joke > >- -------------------------------------------------------------------------------- A .14 Faut-il esperer qu'avec VMS/POSIX on aura le DCL_DEC shell, le DCL_bourre shell, le DCL_cornedbeaf shell et pourquoi pas le DCL_DEC_BO_modified shell et meme le DCL_DEC_BO_FF_modified shell ce qui agrementera largement cette messagerie vu que plus personne ne saura plus quelle langue on cause. Mais la je fais certainement du mauvais esprit. Un systeme portable ne peux pas etre aussi ubuesque et babelesque. ================================================================================ Note 1232.17 Doubler SYS$OUTPUT 17 of 27 DECUSF::OURGHANLIA_B "Eppur si muove..." 71 lines 20-MAR-1991 13:31 -< Un shell.... Pas de probleme... >- -------------------------------------------------------------------------------- Reponse a .16 : pas de probleme, vous voulez un shell bricole, developpe sur un coin de table ce matin et qui tourne sous VMS/POSIX ???? Le voici et en plus il tourne sous ULTRIX.... : #define _POSIX_SOURCE #include #define MAX_LINE 255 #define MAX_ARGS 16 char image[MAX_LINE]; char line[MAX_LINE]; char *args[MAX_ARGS]; main(argc,argv) int argc; char *argv[]; { int pid, status; while (1) { printf("\DCL_DEC_BO_MODIFIED_sh> "); if (fgets(line, MAX_LINE, stdin) ==NULL) _exit(0); parse(line, args); if((args[0] == (char *)0) || (args[0] =='\0')) continue; if(strcmp(args[0], "exit") == 0) _exit(0); vms_exe(args); if((pid = fork()) ==0) { execv(args[0], args); _exit(1); } pid = wait(&status); } } parse(line, args) char *line; char **args; { int blank = 1; while (*line) { if ((*line == ' ') || (*line == '\t') || (*line == '\n')) { *line = '\0'; blank++; } else { if (blank) { *args++ = line; blank = 0; } } line++; } *args++ = (char *)0; } vms_exe(args) char *args[]; { image[0] = '\0'; strcat(image, args[0]); strcat (image, ".exe"); args[0] = image; } ================================================================================ Note 1232.18 Doubler SYS$OUTPUT 18 of 27 DECUSF::FOUCHET_F "François FOUCHET" 5 lines 20-MAR-1991 13:53 -< Pourquoi pas ... >- -------------------------------------------------------------------------------- > Faut-il esperer qu'avec VMS/POSIX on aura le DCL_DEC shell, le > DCL_bourre shell, le DCL_cornedbeaf shell et pourquoi pas le > DCL_DEC_BO_modified shell et meme le DCL_DEC_BO_FF_modified shell ce Des que j'ai recu POSIX, je m'y mets ! Promis ... ================================================================================ Note 1232.19 Doubler SYS$OUTPUT 19 of 27 DECUSF::GRACIA_J "José GRACIA - GRL/ELF Lacq" 5 lines 21-MAR-1991 10:09 -< Pipedriver et DCL ? >- -------------------------------------------------------------------------------- Pour en revenir au pb interessant de .0 (suite a une presentation du precedent symposium je m'etais depeche de lancer systartup_V5 en process detache) je ne vois pas l'utilisation immediate du pipedriver a partir de DCL. Je pense qu'il faut l'invoquer a partir d'un programme. Me trompje? ================================================================================ Note 1232.20 Doubler SYS$OUTPUT 20 of 27 DECUSF::PERROT_B "IPN Orsay" 40 lines 21-MAR-1991 19:52 -< Pipedriver et DCL !!! >- -------------------------------------------------------------------------------- Si, si, il y a des milliards d'applications en DCL pour economiser des i/o disque ! par exemple chaque fois que dans un .com, le traitement est dependant de l'output d'une commande DCL. La methode traditionnelle en DCL est alors de faire un $define/user sys$output dummy.tmp, puis un open/read de ce fichier, puis lecture, puis un delete a la fin de la procedure car devenu inutile. Un exemple (sans interet, juste pour la demo, ecrit a main levee, pas teste...) avec PIPE sans PIPE $open/share=write/write out pipe0: $open/read in 'f$trnlnm("out")': $define/user sys$output out: $define/user sys$output out: $show user/full $show user/full $close out $open/read in dummy.tmp $read in l $read in l $read in l $read in l : $me=f$getjpi("","username") : $set proc/priv=all : $loop: - id - $read/end=fin/err=fin in l : $user=f$extr(1,12,l) : $if (user .nes. me) : $ then $ pid=f$extr(39,8,l) $ stop/id='pid' $endif $goto loop $fin: $write sys$output "Le bonheur... enfin..." $close in $close in $delete="delete" $delete dummy.tmp;* ================================================================================ Note 1232.21 Doubler SYS$OUTPUT 21 of 27 DECUSF::SMANS_M "Michel Smans, C.I.R.C., Lyon" 14 lines 22-MAR-1991 07:50 -< voir aussi SYMDRIVER >- -------------------------------------------------------------------------------- c'est pour economiser les I/O que j'avais eu l'idee d'un driver de symboles DCL. N'etant pas specialiste driver, on avait discute ca avec Jean_Yves Collot il y a quelques annees et il avait "pondu" le tres utile SYMDRIVER qui doit toujours se trouver dans une bande DECUS principe: $ define/user sys$output sym: $ show user/full $! $! maintenant on a des symboles DCL $0, $1, ... (en tout $NBS) $! qu'il suffit d'uitliser a sa guise Encore bravo a Jean-Yves ================================================================================ Note 1232.22 Doubler SYS$OUTPUT 22 of 27 DECUSF::GRACIA_J "José GRACIA - GRL/ELF Lacq" 5 lines 22-MAR-1991 10:37 -< Preciser version VMS requise...! >- -------------------------------------------------------------------------------- Dis, BO, t'as pas (100 balles..yop!) pipedrivr.EXE en 5.3-1. je viens de prendre un system version mismatch sur le coin de mon SYSGEN...! Non c'est juste pour plaisanter car si tout le monde te demande sa version. Mais peut-être faut-il préciser qu'il ne tourne qu'en V5.4-xx ================================================================================ Note 1232.23 Doubler SYS$OUTPUT 23 of 27 DECUSF::OURGHANLIA_B "Eppur si muove..." 2 lines 22-MAR-1991 11:06 -< Enjoy... >- -------------------------------------------------------------------------------- VMS:PIPEDRIVR_V53.EXE est la version qui tourne en V5.3. Desole, mais je ne pensais plus a ces "vieilles" versions.... ================================================================================ Note 1232.24 Doubler SYS$OUTPUT 24 of 27 DECUSF::GRACIA_J "José GRACIA - GRL/ELF Lacq" 1 line 22-MAR-1991 13:24 -< Merci >- -------------------------------------------------------------------------------- ================================================================================ Note 1232.25 Doubler SYS$OUTPUT 25 of 27 DECUSF::NOLIN_PH "NOLIN Ph. S.A.G.E.M. Argenteuil" 5 lines 22-MAR-1991 15:35 -< PIPE ne pipe pas un mot >- -------------------------------------------------------------------------------- En reprenant l'exemple ci-dessus (en l'amenagant legerement car la solitude n'est pas forcement une fin en soi) la commande $sho user/full ne fait rien - pas d'IO, pas de CPU, ... Où me trompé-je ? VMS 5.3-1, le bon driver (le dernier). !! ================================================================================ Note 1232.26 Doubler SYS$OUTPUT 26 of 27 DECUSF::PERROT_B "IPN Orsay" 5 lines 22-MAR-1991 21:38 -< Moi ca marche >- -------------------------------------------------------------------------------- Ben chez moi (5.4-0A), ca marche (le debut, c'est vrai que la fin ... j'ai du ecrire ca apres une dure journee avec dix milles utilisateurs persuades que l'informatique ne fait que regresser depuis la disparition de la teletype. il y a des jours ou je me dis que administrateur systeme sans utilisateurs ca pourrait etre le reve...) ================================================================================ Note 1232.27 Doubler SYS$OUTPUT 27 of 27 DECUSF::FOUCHET_F "François FOUCHET" 8 lines 25-MAR-1991 11:31 -< PIPDRIVR 5.3/5.4 : meme combat >- -------------------------------------------------------------------------------- Le plus drole, c'est que les versions de PIPEDRIVR linkes avec VMS 5.3 et 5.4 sont exactement les memes, a l'instruction pres ... > il y a des jours ou je me dis que administrateur systeme sans utilisateurs > ca pourrait etre le reve...) Effectivement, la plus part des sites fonctionneraient beaucoup mieux sans utilisateurs ... mais ca serait d'un triste !