Accueil > Forum > > > > UNIX C Language
UNIX C Language
jeudi 17 novembre 2011 à 09:46:11 |
UNIX C Language

RMEU
|
Bonjour,
Quelqu'un pourrait-il me donner le nom d'une fonction C qui prend un nom de fichier comme paramètre et retourne le type de fichier? En bref, l'équivalent de la commande shell file.
Pas la fonction stat car on ne peut pas savoir si le fichier compressé ou pas or c'est cette information qui m'intéresse.
Merci d'avance.
RMEU
|
|
jeudi 17 novembre 2011 à 10:46:57 |
Re : UNIX C Language

Renfield
|
pourquoi ne pas invoquer ta commande shell ?
Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
|
|
jeudi 17 novembre 2011 à 10:50:37 |
Re : UNIX C Language

RMEU
|
Car je préfère ne pas sortir du programme. Sinon, je peux exécuter la commande file à partir du programme, mais comment récupérer l'output de la command?
RMEU
|
|
jeudi 17 novembre 2011 à 11:00:35 |
Re : UNIX C Language

coucou747
|
Bonjour,
avec de la redirection de flux (voir la fonction dup2) et les fonctions associées à execve, tu peux faire un truc du genre :
duppliquer stdout
forker
dans le fils, lancer ta commande
dans le père, lire le stdout du fils
Les exemples d'utilisations de execve sont nombreux.
Cordialement,
Maxime
|
|
jeudi 17 novembre 2011 à 11:16:25 |
Re : UNIX C Language

RMEU
|
Merci pour la réponse, je vais essayer cette solution
RMEU
|
|
vendredi 18 novembre 2011 à 15:35:08 |
Re : UNIX C Language

katsankat
|
Réponse acceptée !
popen() est probablement le plus simple à mettre en oeuvre pour lancer une commande et récupérer la sortie standard.
Code C/C++ :
FILE *in;
char buff[512];
if (!(in = popen("ls -la", "r"))) {
return;
}
while (fgets(buff, sizeof(buff), in) != NULL ) {
printf("Output: %s", buff);
}
pclose(in);
|
|
vendredi 18 novembre 2011 à 17:04:29 |
Re : UNIX C Language

RMEU
|
Bonjour Katsankat,
Ceci me semble être la meilleure solution à mon problème.
Bon week-end
RMEU
|
|
samedi 19 novembre 2011 à 21:03:28 |
Re : UNIX C Language

rt15
|
Salut,
Pour info, le man est assez précis sur ce que fait file, elle ne semble pas excessivement dur recoder.
1/ D'abord stat.
2/ Puis il cherche des "nombres magiques" répertoriés dans /usr/share/magic.
3/ Si c'est un fichier ASCII, il cherche des mots contenus dans names.h.
Les tests de systèmes de fichiers sont basés sur l'examen de la sortie de l'appel-système stat(2) . Le programme vérifie si le fichier est vide, ou s'il s'agit d'un certain type de fichier spéciaux. Tous les types de fichiers connus appropriés présents sur votre système (sockets, liens symboliques ou tubes nommés (FIFOs) sur les systèmes qui les implémentent) sont reconnus lorsqu'ils sont définis dans le fichier d'entête du système sys/stat.h.
Les tests de nombres magiques sont utilisés pour vérifier des fichiers contenant des données dans des formats fixes particuliers. L'exemple type est un fichier binaire exécutable (programme compilé) a.out, dont le format est défini dans a.out.h, et peut-être aussi dans exec.h dans le répertoire d'inclusion standard. Ces fichiers contiennent un ``nombre magique'' qui indique au système d'exploitation UNIX que le fichier est un binaire exécutable, et qui donne le type précis parmi ces multiples types possibles. Le concept de ``nombre magique'' a été appliqué par extension aux fichiers de données. Tout fichier contenant un identificateur invariable a une place fixe dans le fichier peut d'habitude être décrit de cette façon. L'information sur ces fichiers est lue à partir du fichier magique /usr/share/magic.
Si un argument semble être un fichier ASCII, file essaie de deviner le langage dans lequel il a été ecrit. Les tests de langage recherchent des chaînes de caractères particulières (cf names.h) qui peuvent apparaître n'importe où dans les premiers blocs d'un fichier. Par exemple, le mot-clé .br indique que le fichier est probablement un fichier d'entrée troff(1) , comme le mot-clé struct indique un programme C. Ces tests sont moins fiables que les deux autres types de tests, et donc ils sont pratiqués en dernier lieu. Les routines de tests de langage testent également quelques types divers (comme les archives tar(1) ), et déterminent si un fichier de type inconnu doit être étiqueté `ascii text' (texte ascii) ou `data' (données).
|
|
samedi 19 novembre 2011 à 22:08:00 |
Re : UNIX C Language

katsankat
|
Effectivement j'ai regardé la source de file.c avant de répondre. La meilleure solution est de faire appel à ce binaire. Une tâche, un programme c'est ça l'esprit UNIX. Donc popen() ou fork mais on peut ré-écrire la roue et l'adapter en cours de chemin, chacun sa voie chacun est libre surtout s'il a le temps de l'être.
|
|
lundi 21 novembre 2011 à 08:26:07 |
Re : UNIX C Language

RMEU
|
Bonjour,
Merci pout toutes ces réponses. J'ai opté pour la solution proposée par katsankat. Elle est déjà codée et testée et ... elle fonctionne.
Bonne journée
RMEU
|
|
Cette discussion est classée dans : fichier, fonction, unix, language
Répondre à ce message
Sujets en rapport avec ce message
Lecture/écriture de fichier .INI sous Unix? [ par Samprayoga ]
Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme
lecture de fichier [ par Machuet ]
Hello, j'ai plusieurs question concernant la manipulation de fichier. En effet venant de VB, j'aimerais savoir si il existe des fonction pour lire un
Suprimmer un fichier [ par naney ]
tout d'abort un grand merci au webmaster de ce site :D car j'en avais mare de cherche un site comme vbfranc.com mais qui parler du c et du c++Je cherc
Remplacer la fonction de copie de fichier sous Windows [ par MangaII ]
Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c
Fonction "Remplacer Tout" pour un fichier (VC++.Net) [ par milobac ]
J'aimerais créer un programme, en VC++.Net, qui remplace une chaîne, à chaque fois qu'elle est détecté dans un fichier, par une autre.En quelque sorte
Creer ses propres fonctions [ par CHENRY ]
En VC++6, avec les MFC, je voudrais ajouter à mon projet un fichier de fonctions et procédures personnelles. J'ai créé un fichier d'en-tete contenant
Utiliser un plugin (en dll) [ par CyberP ]
Comment utiliser un plugin ? Le charger et utiliser les fonctions qui sont à l'intérieur ?Je compile un fichier en dll avec une fonction "dire_bonjour
PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ]
Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang
PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ]
Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang
manipulation fichier texte [ par bencholl ]
I / Utilisation de fichiers texteLe fichier "Etud_2002.don" comporte des lignes ainsi structurées (le caractère ';' est utilisé comme séparateur) : NO
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|