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:
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 fichierCode:
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); } }