Programmation système sous LINUX

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007
-
Bonjour a tous,


Voila j'ai installé une mandriva 2006, je programme en C et compile
avec gcc norme C99. Je suis bien avancé en programmation C win32, mais
la sous linux je me pert. comment fonctionne la prog system. Il y a
t-il des "API" comme sous windows? Je m'explique, prenon un bête
exemple. Sous windows je veu faire un programme qui liste les fichiers
d'un dossier et les affiche ainsi que la taille de chacun. J'ai
FindFirsFile et FindNextFile qui me permette de le faire, mais sous
linux? il y a-t-il des fonction contenue dans des lib du système?


J'espère que vous voyez ce que je veu dire. Si oui pourriez-vous me
donner des tuto ou de la doc la dessus? car mes fouilles ne donne rien.


Merci d'avance.

8 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Sous Unix on appelle ca des appels systèmes. Ce sont a peut près les mêmes que ceux que tu peux utiliser dans un shell.
Du coup, pour la recherche je pense que tu as l'appel systeme find, mais je n'en suis pas sur
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Après quelques recherches, j'ai trouvé les fonctions stat et fstat (qui sont déclarées dans le fichier sys/stat.h)
Je trouve que c'est quand même moins agréable à utiliser que les API de Windows
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
13
Bonjour,

Comme tout noyau, linux possède son API. Windows c'est environ 1200 primitives (ou appel système). Linux environ 800. Cependant c'est quasiment pareil, car linux possède des swiss knife avec les primitives de type ioctl (Des fonctions fourre tout)

Les fonctions de manipulation des répertoires sont déclarées dans dirent.h. Le reste des fonctions de manipulations de fichiers dans stdlib.h.

Un conseil. Avant d'attaquer l'API, commences par quelques tutoriaux sur les concepts UNIX et le shell. Leur compréhension facilite l'utilisation du système et sa programmation.

Si tu ne trouves pas de bon tutos c'est que tu dois mal chercher. C'est par bennes entières qu'il y en a sur le net.

Aucun en particulier à te conseiller. Sinon un bouquin
"La programmation sous UNIX" de JM Rifflet. Simple et relativement complet pour débuter.
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Merci a tous.


AlexN, par bennes entières? on dit tous le temps google est ton amis , mais la ... il ne l'ai pas vraiment, je trouve rien.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
13
Euh ... là je sais pas quoi te dire ... Franchement avant de passer par ici, je fais toujours un crochet par un quelconque moteur ... j'ai très souvent des réponses à foison... Peut être ne poses tu pas les bonnes questions, j'en sais rien...

t'as essayer des trucs comme :

tutoriel linux
cours linux
aide linux

restreint ta recherche à france.

au hasard essayes
http://lea-linux.org/
http://linux.developpez.com/cours/
http://www.commentcamarche.net/linux/linintro.php3

Tiens v'la même un cours de fac
http://www.ac-creteil.fr/reseaux/systemes/linux/Welcome.html

Franchement c'est de la mauvaise fois je dirais.
A toi de jouer...
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
J'ai vu tous ces lien, mais ce n'est absolument pas ca que je cherche,
en faite je cherche une sorte d'équivalent de la MSDN sous linux.
Quelque chose qui me permettrai de connaitre les API sous linux. Je ne
cherche pas des cours sur le C sous Linux , je cherche comment utiliser
les APIs de linux sous linux, c'est pas la même chose, car programmer
en C pure sous linux, je vous remercie mais je sais faire lol
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
Messages postés
71
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
14 septembre 2007

Pour tout ce qui est prototype de fonction, il y a les manpages
(bizarre que personne ne les aient encore citées !!). Sous
debian/ubuntu, le nom du package est manpages-dev (à toi de trouver
l'équivalent sous mandriva). Ces manpages donnent donc tout le détail à
propos d'une fonction (ou groupe de fonction proche) , tous les codes
d'erreurs possibles et parfois même des exemples. Par exemple, pour
accéder à l'aide de la fonction socket, man 2 socket. Le chiffre après
man correspond à une classification des manpages. Tout les appels
systèmes sont classés dans les manpages 2 (il y en a moins que 800
comme dit plus haut, faut pas confondre appel système et appel à la
libc). Dans cette catégorie, on trouve entre autre: open, close,
socket, bind, listen, dup, dup2, ioctl. La section 3 des manpages
concerne tout ce qui touche à la librairie C (librairie des fonctions
standards): fopen, fclose, malloc,

opendir (une fonction qui pourrait t'intéreser :))


A la fin de toutes les manpages, on trouve aussi une liste des manpages
associées dans la section "SEE ALSO". Par exemple, dans le cas de
opendir, on trouve les fonctions suivantes:

open(2),  closedir(3),  dirfd(3), readdir(3), rewinddir(3), scandir(3),

seekdir(3), telldir(3).


Le numéro (2,3), n'est nécessaire que quand il existe plus manpage (par
exemple, "man stat" et "man 2 stat" n'affichent pas le meme résultat).

Le
seul problème avec ces manpages est qu'il faut connaitre le nom exact
de la fonction pour laquelle on souhaite avoir de l'aide. C'est
évidemment très embetant quand on commence. En fait, il n'y a pas
vraiment d'index (mis à part les liens SEE ALSO). Heureusement, li
existe un petit utilitaire qui recherche un terme dans toutes les
manpages existantes. Il s'appelle "apropos" (désolé, je ne me rappelle
plus le nom du package dans lequel il est fourni). Par exemple, la
commande "apropos dir | grep "(3)"" permet d'afficher toutes les
manpages contenant "dir" dans leur titre (la partie avec grep permet de
filtrer l'output pour que ne soit affichées que les manpages de la
catégorie 3).


seb@seb# apropos dir | grep "(3)"

alphasort (3)        - scan a directory for matching entries

bindtextdomain (3)   - set directory containing message catalogs

closedir (3)         - close a directory

dirfd (3)            - get directory stream file descriptor

dirname (3)          - Parse pathname components

FcConfigAppFontAddDir (3) - Add fonts from directory to font database

FcConfigGetConfigDirs (3) - Get config directories

FcConfigGetFontDirs (3) - Get font directories

FcDirCacheValid (3)  - check directory cache timestamp

FcDirSave (3)        - save a directory cache

FcDirScan (3)        - scan a font directory

FcStrDirname (3)     - directory part of filename

get_current_dir_name (3) - Get current working directory

getcwd (3)           - Get current working directory

getdirentries (3)    - get directory entries in a filesystem independent format

getwd (3)            - Get current working directory

mkdtemp (3)          - create a unique temporary directory

opendir (3)          - open a directory

pvmfadvise (3)       - Controls use of direct task-to-task routing.

pvmfprecv (3)        - Receive a message directly into a buffer.

readdir (3)          - read a directory

rewinddir (3)        - reset directory stream

scandir (3)          - scan a directory for matching entries

seekdir (3)          - set
the position of the next readdir() call in the directory stream.

telldir (3)          - return current location in directory stream

versionsort (3)      - scan a directory for matching entries


Dans le résultat, tout n'est pas forcément intéressant mais on voit quand même quelque fonction qui pourrait t'intéresser :)


Belo