Bonjour !
J'ai un léger soucis, lorsque je lance une tâche à partir d'un processus principal, celle-ci continue à tourner même lorsque je ferme le programme.
Plus précisément, le processus appelé est censé écrire en boucle dans un fichier, mais même lorsque je ferme le programme j'ai l'impression que la boucle continue à s'exécuter, le fichier ne cesse de se remplir.
Voici les codes si celà peut aider :
Processus principal :
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 int main() { pid_t pid; pid = fork(); // traitement du premier processus fils if (pid == 0) { //processus gps } else { pid = fork(); // traitement du 2ème fils if (pid == 0) { execlp("Comm.exe","Comm.exe",NULL); } } // retour au père return 0; }
Processus appelé (Comm.exe) :
Voila j'ai essayé de mettre un kill(getpid(),SIGTERM) mais ça ne termine pas l'écriture dans le fichier
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 Code : C++ - Sélectionner int main() { RS232 PortCom; Recepteur ICOM; pid_t currentpid; currentpid = getpid(); PortCom.OpenPort("/dev/ttyS0", O_RDWR); PortCom.ConfigPort1(); while(1) { ofstream file("file.txt", ios::out | ios::app); file << "force du signal : " << ICOM.getSmetre(&PortCom) << "%" << endl; file.close(); sleep(1); } }
Partager