Next: S.O.S.
Up: UNIX
Previous: Premiers pas
- Q :
- Comment faire pour continuer à faire tourner un programme quand je ne suis plus logué ?
- R :
- D'abord, ne crois pas qu'en laissant une fenêtre ouverte sur ton Mac tu t'en tireras, car ça ne durera pas plus de 15 minutes d'inactivité, ni qu'un Xlock sur une station est la solution, car il se terminera au bout d'une journée. Non, LA solution c'est ``nohup'', pour lancer prog en arrière-plan et qu'il continue après que tu aies terminé la session. Il suffit de taper ``nohup prog &''. La sortie standard sera redirigée sur le fichier nohup.out pour que tu puisses la lire. Pour savoir si ton programme a fini de tourner, ``ps ux'' t'affichera la part du temps processeur qu'il utilise actuellement, quand il a été lancé, et depuis combien de temps il tourne réellement.
- Q :
- Comment je fais ``kbhit, keypressed, readkey'' ?
- R :
- Tu fais pas, ou tu te prends la tête avec termio.h. Contente-toi plutôt d'un ``gets'' qui attend l'appui sur l'entrée standard. Pour arrêter un programme, pas besoin de lui faire tester toi-même le clavier, ``Ctrl-C'' le tuera à coup sûr.
- Q :
- C'est quoi un core dump ?
- R :
- UNIX a jugé que ton programme faisait n'importe quoi, comme utiliser un pointeur nul, et donc l'a tué, mais pour te permettre de faire un examen post-mortem de ce qu'il en reste, il enregistre le cadavre (le contenu intégral de la machine virtuelle dans laquelle il tournait) dans un gros fichier, le core.
- Q :
- C'est quoi une segmentation fault ?
- R :
- Un accès mémoire invalide : tu as utilisé un pointeur qui n'est pas valable, à commencer par le pointeur nul ou un pointeur non initialisé, ou peut-être as tu dépassé les limites d'un tableau. Si la même chose ne se produit pas sur ton Mac, ce n'est pas UNIX qui est buggé, c'est ton portable qui te laisse faire n'importe quoi, de toute façon, il plantera un jour ou l'autre si tu ne corriges pas le bug.
- Q :
- Pourquoi mon programme marche sur les stations et pas sur mon Mac ?
- R :
- Une des causes possibles : sous UNIX, les variables sont systématiquement initialisées à zéro, mais pas sur un portable, donc tu as dû utiliser une variable sans l'initialiser et la valeur zéro évite le plantage sous UNIX.
- Q :
- Pourquoi UNIX ne plante jamais et mon portable tout le temps ?
- R :
- demande à Apple ou à Microsoft, sous UNIX chaque programme est presque physiquement séparé des autres sans aucune interaction possible, donc si un programme plante, le reste tourne sans même s'en rendre compte.
- Q :
- Comment je fais un joli poly moi aussi ?
- R :
- LaTeX. Le plus simple, c'est de passer à la BCX pour emprunter un livre qui explique comment ça marche. En gros : tu tapes ton texte, et tu places au milieu des trucs du genre : ``
chapter
nom du premier chapitre
''. c'est pas super-intuitif au début, mais on s'y fait vite. L'avantage de cette méthode par rapport à un système WYSIWYG c'est qu'on pense moins à l'allure mais plus à l'organisation. De plus, c'est plus souple et surtout beaucoup plus facile à gérer quand le texte s'allonge. En conclusion, on ne passe pas des heures à chercher le sous-sous-
-menu qui permet de mettre des points de suspensions au milieu et non en bas ! (...
).
- Q :
- Comment j'utilise une disquette sur les stations ?
- R :
- On peut utiliser soit le format bestial style bande magnétique, par exemple avec tar zcvf /dev/fd0 * pour archiver le répertoire courant, soit les ``mtools'' pour le format MS/DOS : mdir a: pour le catalogue, mcd pour se balader dans les répertoires, mcopy toto.unix a:toto.dos pour copier un fichier sur la disquette (attention à utiliser 8+3 lettres), mcopy a:toto.doc toto.unix pour relire ce fichier et mformat pour formater la disquette. D'autre commandes existent aussi : mren, mdel, mmd, mrd, mattrib, mlabel. Tu peux faire man mtools pour plus de détails. Enfin pour éjecter la disquette : eject.
- Q :
- Comment je redirige aussi la sortie des erreurs dans un fichier ?
- R :
- Par exemple, si ton programme s'appelle `machin', et que tu désires envoyer sa sortie texte dans le fichier `machin.sortie' il suffit de taper : machin > machin.sortie ou bien machin 1> machin.sortie. Pour la sortie erreurs, il faut taper : machin 2> machin.erreurs si on désire envoyer les erreurs dans le fichier `machin.erreurs' (on notera que 1> correspond à la sortie standard et 2> aux erreurs...). De plus, si on veut ignorer une sortie, il existe un pseudo-fichier nommé `/dev/null' dont le rôle est d'absorber tel un trou noir tout ce qu'on lui envoie. Ainsi, machin 1>/dev/null 2>/dev/null ne sort rien ! (On peut raccourcir cela en tapant machin >/dev/null 2>&1 ce qui veut dire qu'on envoie les erreurs au même endroit que la sortie standard).
Next: S.O.S.
Up: UNIX
Previous: Premiers pas
Wed Jun 25 13:24:35 MET DST 1997