Bonjour

Je dois créer un petit programme basique qui affichera un texte grace à l'appelle d'une fonction et l'utilisation de "execlp". Evidemment cela ne fonctionne pas, du moins l'utilisation de "execlp".

En gros cela donne ca:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*                                                                              
** main.c for  in /home/beaule_v//Documents/TP/Minishell                        
**                                                                              
** Made by valentin beaule                                                      
** Login   <beaule_v@epitech.net>                                               
**                                                                              
** Started on  Fri Dec 16 14:31:45 2011 valentin beaule                         
** Last update Fri Dec 23 16:06:51 2011 valentin beaule                         
*/
 
#include <unistd.h>
#include <sys/types.h>
#include "include/my.h"
 
/*
**Le programme basique my_exec2, qui doit affiché du
**texte pour vérifier si la manipulation a fonctionné.
*/
 
int     my_exec2()
{
  my_putstr("J'ai executé my_exec2().\n");
  return (0);
}
 
/*
**La fonction my_exec1, qui doit appeller execlp pour
**executer my_exec2, mais qui n'affiche que le beau
**"42", avec un beau temps d'attente avec sleep."
*/
 
int     my_exec1()
{
  extern char **environ;
 
  my_put_nbr(42);
  sleep(1);
  execlp("my_exec2", "my_exec2", 0);
  return (0);
}
 
/*
**Les restes de l'exercice precedent, qui ne fait qu'utiliser
**fork, et appeller exec1 via le processus fils.
*/
 
int     main()
{
  pid_t fork();
 
  if (fork())
    {
      my_exec1();
      return(0);
    }
      return (0);
}
Voila, merci beaucoup pour toute aide que vous m'apporterez, et je suis open pour tous commentaires que vous pourriez me faire.

PS: Desole pour l'orthographe, je suis un peu nul en francais, et mon os connait pas le francais...^^

EDIT:

C'est bon, j'ai réglé mon problème. J'ai créer un nouveau programme complet que j'ai compilé au nom que je voulais utilisé. J'ai ensuite utilisé le même programme principale mais en modifiant execlp, comme ca: execlp("./my_exec2", "my_exec2é, NULL);. Cela marche parfaitement! Donc merci quand même! ^^

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*                                                                              
** main.c for  in /home/beaule_v//Documents/TP/Minishell                        
**                                                                              
** Made by valentin beaule                                                      
** Login   <beaule_v@epitech.net>                                               
**                                                                              
** Started on  Fri Dec 16 14:31:45 2011 valentin beaule                         
** Last update Fri Dec 23 16:06:51 2011 valentin beaule                         
*/
 
#include <unistd.h>
#include <sys/types.h>
#include "include/my.h"
 
/*
**La fonction my_exec1, qui doit appeller execlp pour
**executer my_exec2, mais qui n'affiche que le beau
**"42", avec un beau temps d'attente avec sleep."
*/
 
int     my_exec1()
{
  extern char **environ;
 
  my_put_nbr(42);
  sleep(1);
  execlp("./my_exec2", "my_exec2", 0);
  return (0);
}
 
/*
**Les restes de l'exercice precedent, qui ne fait qu'utiliser
**fork, et appeller exec1 via le processus fils.
*/
 
int     main()
{
  pid_t fork();
 
  if (fork() == 0)
    {
      my_exec1();
      return(0);
    }
      return (0);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
/*                                                                              
** my_exec2.c for  in /home/beaule_v//Documents/TP/Minishell                    
**                                                                              
** Made by valentin beaule                                                      
** Login   <beaule_v@epitech.net>                                               
**                                                                              
** Started on  Fri Dec 23 15:46:14 2011 valentin beaule                         
** Last update Fri Dec 23 17:04:18 2011 valentin beaule                         
*/
 
#include "include/my.h"
 
/*
**Affichage pour vérifier la réussite du programme.
*/
int     my_exec2()
{
  my_putstr("J'ai executé my_exec2().\n");
  return (0);
}
 
int     main()
{
  my_exec2();
  return (0);
}