sigaction(linux) vers signal(windows)
Bonjour !
Voilà je dois reprendre un programme développé sous Linux et l'adapter au développement Windows.
Le problème c'est que la portabilité est semble-t-il pas terrible. Et pour cause ! J'ai réussi à trouver les bibliothèques sans trop de mal.
ce qui était sous Linux:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
Devient ça sous Windows :
#include <winsock.h>
#include <winsock2.h>
Le problème est que sigaction ne compile pas sous windows. je suis obliger d'utiliser signal.h et les 6 paramètres qui existent. :aie:
http://www.cplusplus.com/reference/c...signal/signal/
Je ne connais pas énormément la gestion de signaux. Et j'avoue être un peu perdu. :roll:
c'est ici que ça coince :
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 25 26 27 28 29 30
|
void fin (int sig) {
bdd_fermer();
if (close (s) != -1)
printf("Fermeture du socket serveur\n");
exit(0);
}
int main(){
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
struct sockaddr_in saddr;
struct sockaddr_in caddr;
typedef size_t socklen_t;// = sizeof(caddr);
socklen_t caddrsize = sizeof(caddr);
int ret;
int c;
pid_t child_pid;
struct sigaction act; //n'est pas connu
//Quitter proprement par ^C
act.sa_handler = fin;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGINT, &act,0);
signal(SIGCHLD,SIG_IGN); // SIGCHLD n'existe pas sous windows
return 0;
} |
J'utilise CodeBlocks comme IDE.
Merci à vous :ccool: