Bonjour, j'aimerais savoir si il est possible de lancer un programme a partir d'un autre en c sachant qu'il faut gérer le fait que cela doit être modulable, c'est a dire qu'il faut que ce soit l'utilisateur qui décide quel programme il faudra lancer. Il s'agit d'une commande DOS pour un projet de création d'un OS...
J'ai vu sur le forum qu'il existait la commande ```system("start programme.exe")```, mais je ne suis pas sur que cela fonctionne ni de pouvoir la personnaliser pour mes besoins...
Alors, précises tes besoins. system() accepte une chaîne de caractères comme paramètre. Ça doit être une commande ou un programme reconnu par ton invite de commande ou ta console. exemple: system("echo Hello World!"); Si tu es sur une distribution Linux, il y a les variantes de la fonction exec*()
Le Tout est souvent plus grand que la somme de ses parties.
Je suis sur Windows, donc je ne peux pas utiliser exec*() La fonction system() fonctionne très bien pour moi. Tu peux utiliser des commandes de DOS (moi c'est cmd) pour changer de répertoire et exécuter ensuite la bonne commande.
- Edité par PierrotLeFou 9 octobre 2021 à 19:31:56
Le Tout est souvent plus grand que la somme de ses parties.
Encore une fois, le problème c'est que c'est une fonction destinée a être implémentée dans un OS Vierge, genre y'a que cette fonction pour ouvrir un programme... De plus, on est sur un OS from scratch et du coup pas sur linux, on est en train de faire un peu notre MS-DOS quoi.. J'espère que tu m'a a peu près compris, j'ai peur de ne pas être très clair...
Merci de me le rappeler Il est en grande partie constitué du code de CodePulse, mais on est en train de le modifier petit à petit.. Je vous envoie le lien du github et du discord si besoin .
Le discord (attention c'est un peu une dictature, faire respecter le règlement est une priorité, il est appliqué durement...): https://discord.gg/Y7NJS2xBtt
Bref, y a un moment, il va falloir que vous écriviez un bout de code qui charge en mémoire un exécutable pris dans un fichier et démarre son exécution. Bon courage.
- Edité par michelbillaud 9 octobre 2021 à 20:11:25
Ah, alors petite question, peut-on prendre ce code ou il y a des copyrights? Merci pour cette piste, existe-t-il un moyen plus simple pour en faire un soi-même?
Un compileur s'occupe de créer les liaisons entre les différents fichier du programme mais aussi traduit le langage utilisé en langage binaire pour que le processeur puisse le comprendre, voila voila...
"Ah, alors petite question, peut-on prendre ce code ou il y a des copyrights? Merci pour cette piste, existe-t-il un moyen plus simple pour en faire un soi-même?" Et qu'est qui te pose soucis ? Franchement dire qu'on fait un OS est passavoir faire un truc pareil..
1) tu lis l'adresse en argument du path ,tu le lis dans ton système de fichier 2)tu charge ton programme en RAM 3) tu l’exécute ensuite (un simple call adresse en ram de mon zolie programme en monotache , ou alors tu le met dans ton ordonnanceur si il est multitache) 4) un shared memory éventuellement pour récupérer le retour de system (mais tu preux le recuperer seulement avec un registre ,si ton OS est monotache).
"Il s'agit d'une commande DOS" Une raison particulière de reprendre les commandes DOS ? Cela me semble plus logique de reprendre les commande UNIX mais bon..
"Une raison particulière de reprendre les commandes DOS ? Cela me semble plus logique de reprendre les commande UNIX mais bon.."
Tu as peut-être raison, mais pour l'instant on fait un DOS qui sera le mode "Noyau" du système, le mode user sera une IUG où l'on va interdire les actions dangereuses comme le changement de certains protocoles, le mode noyau sera aussi présent en plus limité pour les petites machines, pour l'instant le tout tourne sur 4Mo de RAM, l'objectif est de consommer le minimum de RAM.
Le problème étant que je viens de commencer et que je n'ai pas forcément toutes les notions mais nous sommes 4 sur le projet donc... Voila, on essaie de se répartir les tâches et pour ma défense, de base je programme en Java, python, JS et HTML/CSS, pas en C C++ et ASM...
Un compileur s'occupe de créer les liaisons entre les différents fichier du programme mais aussi traduit le langage utilisé en langage binaire pour que le processeur puisse le comprendre, voila voila...
Il compile les fichiers source, mais il ne fait pas les liaisons ! Les liaisons c'est le rôle du linker !
Il me semble que le PO a beaucoup de lacune dans l'informatique ce qui explique entre autre le mot "complieur" et que ça ne fait pas le link.
D'ailleurs je me demande pourquoi refaire un compilateur , déjà qu'un OS c'est relativement long ,alors refaire un compilateur...
"le mode noyau sera aussi présent en plus limité pour les petites machines, pour l'instant le tout tourne sur 4Mo de RAM" Ce n'est pas compliqué de faire tourner un OS 1 Mo ou moins , mais tout dépend de ce que doit faire l'OS surtout , plus tu veux qu'il a de fonctionnalité ,plus ça augmentera.
OOOh ca non... On a beau être 4 sur le projet on patine sur le Scheduler... C'est la m****
Un piste pour le scheduler. C'est totalement impossible d'écrire un scheduler préemptif en C, il va falloir utiliser l'assembleur. Un Sheduler ça doit agir sur la pile du processeur, ça n'a aucun sens dans une fonction!
En recherche d'emploi.
Lancer un programme a partir d'un programme en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
En recherche d'emploi.