Ben bir ana işlevi vardır bu programı, hangi iç, böyle iki soket oluşturma yazdım:Sinyal işlemek için Auto ve Lambda kullanma?
Şimdiint sockfd1 = socket(AF_INET, SOCK_STREAM, 0);
int sockfd2 = socket(AF_INET, SOCK_STREAM, 0);
onlarla bir şeyler yapmak ve kullanıcı bastığında Ctrl + C sonlandırmak için süreç, ben prizler düzgün kapatmak emin olmak istiyorum, bu yüzden bunu:
auto sigTermHandler = [&] (int param) { close(sockfd1); close(sockfd2); };
signal(SIGTERM, sigTermHandler);
Ama bu g++ -std=gnu++0x <filename>.cpp
olarak derlenmiş aşağıdaki derleme hatası atar:
error: cannot convert ‘main(int, char**)::<lambda(int)>’ to ‘__sighandler_t {aka void (*)(int)}’ for argument ‘2’ to ‘void (* signal(int, __sighandler_t))(int)’
Sinyal işlemek için lambda bu şekilde kullanmak mümkün değil mi? Tavsiye lütfen.
P.S. Bunu bir yıkıcıya koyabileceğimi biliyorum, eğer uygun bir OOP yaptıysam, ama bunun işe yarayıp yaramadığını merak ediyorum.