[LMI]- unistd.h inexistant

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LMI]- unistd.h inexistant

Message  justblaze le Sam 22 Mar 2008, 11:56

Bonjour,

j'ai voulu continué le td3, l'exercie où l'on demande d'écrire un bout de code permettant d'arrêter un processus en cours, et malheureusement je n'ai pas les fichiers unistd.h et fcntl.h (pour la suite), même pas les dossiers "asm" et "bits" se trouvant dans "/usr/include/"....
où je pourrais avoir ces fichiers pour me permettre d'avancé ? et comment ?

merci

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  nvs le Sam 22 Mar 2008, 13:59

j'ai observé la même chose chez moi (fc8). une petite recherche fournit les liens suivants : unistd.h, fctl.h.



_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Dim 30 Mar 2008, 17:33

Généralement le répertoire asm est un lien soft vers asm-tonarchitecture, il existe aussi les répertoires asm-generic, ...

Chez moi, c'est
Code:
/usr/include/asm-generic/fcntl.h
/usr/include/asm-i486/unistd.h

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  sphere le Ven 04 Avr 2008, 13:49

et en restant plus ou moins dans le sujet comment sommes nous sencer les comprendre ? car personnellement avec des lignes comme cela :
Code:

#include <sys/types.h>

/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  located on an ext2 file system */
#define O_ACCMODE     0003
#define O_RDONLY       00
#define O_WRONLY       01
#define O_RDWR          02
#define O_CREAT        0100   /* not fcntl */
#define O_EXCL        0200   /* not fcntl */
#define O_NOCTTY     0400   /* not fcntl */
#define O_TRUNC        01000   /* not fcntl */
#define O_APPEND     02000
#define O_NONBLOCK     04000
#define O_NDELAY   O_NONBLOCK
#define O_SYNC       010000
#define O_FSYNC       O_SYNC
#define O_ASYNC       020000

je comprend pas comment les lires ni les exploiter (il n'y a aucun exemple dans ce td3 et pourtant je croie que cela aiderait pas mal) scratch

sphere

Nombre de messages : 75
Age : 29
Prénom : Derek
Statut : g30592
Localisation : Bruxelles
Date d'inscription : 02/10/2007

http://www.sgcb.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  AsPrO le Ven 04 Avr 2008, 14:38

#define O_RDONLY 00
signifie que tu définis un "mot-clef" O_RDONLY (lecture seule) qui lorsque le compilateur fera son boulot remplacera ce mot par "0".

Pourquoi faire ça ?
Tout simplement parce que lorsque tu feras un appel système du genre open, il est plus facile de retenir que lorsque tu veux lire un fichier en lecture seule, tu le fais en écrivant O_RDONLY dans le paramètre adéquat. Ca va aussi dans l'autre sens, quand tu dois lire du code il est plus facile de lire O_RDONLY que "0" dans quel cas tu devras chercher ce que veut dire ce "0".

Comment l'exploiter ?
Si tu sais que tu veux une lecture seule mais que tu ne connais pas la syntaxe exacte, tu va voir dans le fichier ce qui y ressemble le +


PS : je ne suis pas sur que ces define sont pour l'appel système open mais le principe reste le même

AsPrO

Nombre de messages : 392
Age : 30
Prénom : Anthony
Statut : 1er Réseau
Date d'inscription : 01/03/2006

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  nvs le Ven 04 Avr 2008, 19:11

et n'oubliez pas que, dans un fichier source ou en-tête c, les valeurs commençant par un zéro sont octales.




_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Ven 04 Avr 2008, 21:02

sphere a écrit:et en restant plus ou moins dans le sujet comment sommes nous sencer les comprendre ? car personnellement avec des lignes comme cela :
[code]
#include <sys/types.h>

/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
located on an ext2 file system */
...
#define O_RDWR 02
#define O_CREAT 0100 /* not fcntl */

C'est donc un peu comme on t'explique dans les deux posts plus haut ...

En vrac car les détails seront vus au cours ou au labo:
- Les valeurs sont en octal
- Les "define" sont (à priori) destinés au langage C ... en assembleur, j'utilise les valeurs numériques. Ce fichier m'aide donc à savoir que la valeur 2 c'est RDWR ... et je devine --ou je demande ou je le lis dans la page de manuel associée à l'appel système open-- que ça veut dire ReaDWRite
- Si je veux combiner plusieurs droits, je peux faire un OR entre les valeurs. Sauf erreur de ma part, si je veux ouvrir un fichier en lecture/écriture et que ce fichier n'existe pas, je positionnerai les flags à 02 OR 0100 soit 001000010b

Édité afin de corriger la grosse bourde signalée par Nfs.


Dernière édition par PbT le Ven 04 Avr 2008, 22:36, édité 2 fois

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  nvs le Ven 04 Avr 2008, 21:45

PbT a écrit: - Si je veux combiner plusieurs droits, je peux faire un AND entre les valeurs. Sauf erreur de ma part, si je veux ouvrir un fichier en lecture/écriture et que ce fichier n'existe pas, je positionnerai les flags à 02 AND 0100 soit 001000010b
avec un 'or' ('|', ou bit à bit aka bitwise or) plutôt !

pour info : 02 and 0100 donne 0 Wink



_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Ven 04 Avr 2008, 22:34

Merci mon bon nfs et honte sur moi d'avoir commis une aussi grosse bourde, je suis confus. Bien que ce ne sois pas du tout une excuse, force m'est de constater que je répond trop vite et que je devrais me relire ...

Je me permets d'éditer mon message pour les lecteurs rapides.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  justblaze le Sam 05 Avr 2008, 13:43

PbT a écrit:Généralement le répertoire asm est un lien soft vers asm-tonarchitecture, il existe aussi les répertoires asm-generic, ...
Mr vous êtes sur debian je crois, nous on nous demande d'avoir ubuntu à la maison...
chez moi "usr/include/... et rien pas de asm

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Sam 05 Avr 2008, 14:41

justblaze a écrit:
PbT a écrit:Généralement le répertoire asm est un lien soft vers asm-tonarchitecture, il existe aussi les répertoires asm-generic, ...
Mr vous êtes sur debian je crois, nous on nous demande d'avoir ubuntu à la maison...
chez moi "usr/include/... et rien pas de asm

Peux-tu vérifier que tu n'as pas de répertoire /usr/include (sans oublier le / de début puisque c'est un chemin complètement qualifié) ni de sous répertoire "à la" asm dedans. Si tu n'as pas ces répertoires tu peux utiliser la commande find afin de voir si le fichier en question existe dans ton file system.

Peux-tu également me dire (éventuellement pas MP si tu es timide) qui te demande d'avoir Unbuntu à la maison. Je croyais que l'attitude des profs était la même à savoir, on vous conseille d'avoir une machine Linux à la maison (ou tout au moins d'avoir accès à une machine Linux) et de là toutes les manières sont bonnes. Certes il y en a des meilleures que d'autres mais vous pouvez:
- vous connecter à distance chez des copains,
- installer une machine virutelle,
- trouver un morceau de HD où installer Linux

Dans les deux derniers cas, vous utilisez la distribution de votre choix. Maintenant si vous posez des questions aux profs pour savoir comment faire ça ou ça, la réponse sera plus précise si le prof connait la distribution utilisée; soit Ubuntu pour Mcd et Mba, Slackware pour Mvh, Mandriva pour Jcj et Debian pour moi ... mes autres collègues, je ne sais pas.

Bien à toi.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  justblaze le Sam 05 Avr 2008, 15:11

je peux affirmer que c'est Mme MBa (elle utilise ubuntu ^^)
j'utilise une machine virtuelle VirtualBox sous Vista pour mon linux
bien j'ai fais un "find" et "find unistd.h" dans le dossier "/usr/include/" et "/usr/" mais rien du tout. donc je verrais avec Mme MBa.

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Sam 05 Avr 2008, 16:18

justblaze a écrit:je peux affirmer que c'est Mme MBa (elle utilise ubuntu ^^)
j'utilise une machine virtuelle VirtualBox sous Vista pour mon linux
bien j'ai fais un "find" et "find unistd.h" dans le dossier "/usr/include/" et "/usr/" mais rien du tout. donc je verrais avec Mme MBa.

As-tu le paquet linux-kernel-headers installé, je me demande si ce n'est pas ce paquet qui fournit les fichiers dont il est question.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  justblaze le Sam 05 Avr 2008, 23:30

PbT a écrit:As-tu le paquet linux-kernel-headers installé, je me demande si ce n'est pas ce paquet qui fournit les fichiers dont il est question.
merci monsieur, c'était bien ce paquet qu'il manquait!! selon vous pourquoi il me manquait ce paquet ??

justblaze

Nombre de messages : 159
Age : 30
Prénom : Ismael
Statut : Etd 3R11
Localisation : Wolu. St. Lambert
Date d'inscription : 09/11/2006

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Dim 06 Avr 2008, 10:13

justblaze a écrit:merci monsieur, c'était bien ce paquet qu'il manquait!! selon vous pourquoi il me manquait ce paquet ??

Ça dépend un peu des distributions mais pour faire bref, tu n'as pas dit (ou on ne te la pas demandé lors de l'installation) que tu aimais programmer et donc par défaut ta distribution n'installe pas les paquets propres aux programmeurs. Je pense même que l'on peut parler ici de "programmeurs systèmes" puisque tu as besoin des fichiers d'entête du noyau (kernel).

(C'est en très bref mais l'idée est là ;-) )


_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  sphere le Dim 06 Avr 2008, 11:26

PbT a écrit:
En vrac car les détails seront vus au cours ou au labo:

Marrant mais au dernière nouvelle on n'avais eu aucune explication au labo ni au cours et pourtant on est sensé l'avoir fini pour la rentré Shocked

sphere

Nombre de messages : 75
Age : 29
Prénom : Derek
Statut : g30592
Localisation : Bruxelles
Date d'inscription : 02/10/2007

http://www.sgcb.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  pbt le Dim 06 Avr 2008, 12:08

sphere a écrit:Marrant mais au dernière nouvelle on n'avais eu aucune explication au labo ni au cours et pourtant on est sensé l'avoir fini pour la rentré Shocked

C'est l'objet du slide 92 du cours.

Si je le prend un peu plus dans le détail et que je l'adapte à open par exemple (il doit être clair que l'on vous explique la démarche à suivre, cette démarche est la même quel que soit l'appel système mais doit bien sur être adapté) cela donne:

Les numéros d'interruptions sont renseignés dans le fichier
/usr/include/asm/unistd.h, chaque numéro correspond à un syscall
(appel système)
Je regarde dans ce fichier et je trouve la ligne.
Code:
#define __NR_open                5
J'en déduis que l'appel système qui m'intéresse porte le numéro 5, je mémorise ça dans ma p'tite tête.

Comme je ne sais pas ce que fait open, je regarde la page de manuel associée soit man 2 open et j'y lis plein de chose dont
- int open(const char *pathname, int flags);

- Le paramètre flags est l'un des éléments O_RDONLY, O_WRONLY ou O_RDWR qui réclament respectivement l'ouverture du fichier en lecture seule, écriture seule, ou lecture-écriture.

De plus, zéro ou plus d'attributs de création de fichier et d'attributs d'état de fichier peuvent être spécifiés dans flags avec un OU binaire. Les attributs de création de fichier sont O_CREAT, O_EXCL, O_NOCTTY et O_TRUNC. Les attributs d'état de fichier sont tous les autres attributs listés ci-dessous. La distinction entre ces deux groupes est que les attributs d'état de fichier peuvent être lus et (dans certains cas) modifiés avec fcntl(2). La liste complète des attributs de création et d'état de fichier est la suivante :
...
O_CREAT Créer le fichier s'il n'existe pas.

Ok, que faire avec ces valeurs O_foo, l'énoncé du TD3 (page 6) m'apprend qu'elles sont définies dans le fichier /usr/include/bits/fcntl.h que je vais lire avfin d'avoir la valeur de O_CREAT par exemple.

Je suis maintenant prêt à écrire le code permettant d'ouvrir un fichier.

Ça me donne :
Code:

; Le numéro de l'interruption que j'ai mémorisé dans ma p'tite tête
mov EAX,5
; Premier paramètre de open, pathname ... le nom du fichier j'imagine
; Je déclare une variable filename contenant ce nom de fichier
mov EBX,filename
; Deuxième paramètre, les flags, d'après man ce sont les O_foo
; Voir plus haut dans ce post, je choisis O_RDWR or O_CREAT et j'écris en base 2, c'est plus lisible
mov ECX,001000010b
int 0x80
; Avec un peu de chance le fichier est ouvert.
; Man me dit que ça retourne le descripteur de fichier dont j'aurais sans doute besoin, je le sauvegarde
mov [fd],EAX

Voilà, là je ne t'ai pas donné le poisson mais je t'ai apris à le pêcher.

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [LMI]- unistd.h inexistant

Message  Contenu sponsorisé Aujourd'hui à 01:07


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum