From 53b1c06aa9137a51defdef5cfd69c80590c0b6ea Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Tue, 21 Nov 2023 23:07:32 +0300 Subject: [PATCH] added prog3 --- PROJECT/func.c | 17 ++++++++++++++--- PROJECT/main.c | 32 +++++++++++++++++++++++--------- PROJECT/out_p/prog2 | Bin 16464 -> 16552 bytes PROJECT/out_p/prog3 | Bin 0 -> 16552 bytes 4 files changed, 37 insertions(+), 12 deletions(-) create mode 100755 PROJECT/out_p/prog3 diff --git a/PROJECT/func.c b/PROJECT/func.c index 8476242..afee160 100644 --- a/PROJECT/func.c +++ b/PROJECT/func.c @@ -1,7 +1,8 @@ #include #include -#include #include +#include +#include double f(double x) { @@ -20,8 +21,18 @@ void find_zero(double *pa, double *pb, double eps, double *px) void ctrlc_handler(int signum) { - printf("\nПолучен сигнал Ctrl+C\n"); - printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + int sig; + sigset_t *set = (sigset_t *)signum; + + while (1) + { + sigwait(set, &sig); + if (sig == SIGINT) + { + printf("\nПолучен сигнал Ctrl+C\n"); + printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + } + } } // void choose_path(char *choice); // void new_row(double *pa, double *pb); \ No newline at end of file diff --git a/PROJECT/main.c b/PROJECT/main.c index 8a03173..e1ac274 100644 --- a/PROJECT/main.c +++ b/PROJECT/main.c @@ -1,6 +1,7 @@ #include #include #include +#include double f(double x); // function x void find_zero(double *pa, double *pb, double eps, double *px); // @@ -12,25 +13,38 @@ int main() { double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; char choice = ' ', *ch = &choice; + pthread_t thread; sigset_t set; - int sig; printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); - // if (a > b || ) - - find_zero(pa, pb, eps, px); - // Создание набора сигналов и добавление в него SIGINT sigemptyset(&set); sigaddset(&set, SIGINT); - // Блокировка SIGINT - sigprocmask(SIG_BLOCK, &set, NULL); + // Блокировка сигналов в наборе для основного потока + if (pthread_sigmask(SIG_BLOCK, &set, NULL) != 0) + { + perror("pthread_sigmask"); + return 1; + } + + // Создание потока для обработчика сигнала + if (pthread_create(&thread, NULL, ctrlc_handler, &set) != 0) + { + perror("pthread_create"); + return 1; + } + + printf("Ожидание сигнала Ctrl+C...\n"); + + find_zero(pa, pb, eps, px); + while (1) + { + sleep(1); + } - // Ожидание получения сигнала Ctrl+C с помощью sigwait - sigwait(&set, &sig); signal(SIGINT, ctrlc_handler); printf("Корень уравнения: %lf\n", *px); diff --git a/PROJECT/out_p/prog2 b/PROJECT/out_p/prog2 index af8efe023c89eb260194da17d5d0ad9b6a1369e3..0dc01f3262cf1a0c30f4e98cc3e36828afa25f9f 100755 GIT binary patch delta 3106 zcmZ`*4Qx}_6~5O$u^lCiU*hoMu9=fG5KM=o?$w99|y-B7D zEE;7x%JWH{_wam))xxN$hVJ0}AkQCXIZSLc!IIHoHlqJJIAN%wk8#~@e(Y(pJ0ui z4n?s+cxY(<5WHgUbhfvVZ4YeU+8brLdO;KO%EZ3O+iEBKq--atM?&QfHp zSZc9r$Y`Zj5i8OIFk7;YQuv}ohR;jN%JZ8wJGN~s&|;DO*sqneTu`fbomGws-GXJY z7kQiS!I(vch^4GtY*?;l-~_4}OBu{#&GCY^HaKmO%S*YHmYo90D#Nm+%vn~TUMOgD z7t~s1S~0!F+HRS$H(0;oA>_8Y`m1oC{e{&LoF#I5?qO9`C;nRT<$p$)@7r@*bdHAQ z9%z=jN3gWdO-P07enOZf@^BIVMiK8X;ya3XUlI2g@y-GcyQP|k?!~jDR#&0C^n|;@ z^<6$mVcN*XW=^n#-Eifn5 zHou1r$nd&;<&ggvD=NuP6J<)u{|b`)!GEi2eh??+ocTrYRCdsVFj%S34e(m!w?Yk}|Dc%f0q3duLL8A1fIp*|(si`{$Ju zV)A$BA^$cuPW84VHY18)vY_)FInG}`Y3mt9#^>k zStVVa!lgLFnlsnEnuk@*=we*B2l5*xZz%J1piQY z7dfytf!_e?SwubEgN4KR-GE;-xaenat-<93{OKNM(07;pc|&hGyY*ONw)6OXg!NNw zBK3M>l9pMl)3kbfsZ+mF1LA6Bb}VIJvc)AOsx{`+fJETk78i}djTR5)lG|mdrO@Vf zZ;gn%OuVDSD*Uib)|JK$ka2>)=OTkMn?d zOLWUiyii3h!3}Qt4{wvX5=Wyw%7@|MHkrDizD?e~8P!Vk`An78mahR8cc5-3PGS#e zx}NW1_6CXQld9`qXWpE{!dp@-1lxlwJxoH>n8-LBNEt*CRK+W3g_I{ncy2rDd&(M`cHy&B7nW zEbyI%t*XJ>AyW^}xAOc^mOJ;Oy=3^`*?9&+Xn&O1m|sPk1|9_c8YWS_z*Ly&_#1rK z`7(^J-}#7sxW!=)=y42&G{NBG@pv$v2n{93zEJeZqUh+3X@`h~Rul|<;FI;cBpyE% zs?$E-6rIj(7@#x*-i;n9CL#eHYrz|EVGL)Nj)>EzBMt-YvqIHz02ViTO6_9zhY|E-1-7uh7&!Wa(%mT1h2Jf z%HK-g2e02_yAvEo{XSbwgSHWB;HSt|!fcpBrk|%6G;i|R^fPk+qMLk@e)c06v#^Ab c(Iyp-@`=qp+XB1hF#R4DH~Z*sp*hg>A5Z}`#sB~S delta 2828 zcmZuzdu&rx7(b`orR&&O+il(z!IsHmFxReZqp;FZd3l!@gCcQJ;+T%dB7?aVod(l% z&iKBgzv-dn)wfQ*G8H<_g?SS&C&gzR&mH0K2{34$L6^gIvkXJ#e0mrnX);~Fbh?(m zTexpeT0Sl1y2=@gxm?5FKQIe~q?K}W{n`z+>j}c@hQ{y<&8x$taZ|V%l2VSXv1#Me z4YkeBFz@rV^+Lh)pC7ANHd};%{9} zBdz!iqP9e?ug@arj|y8Z*V70H{c!hd_~B;qme4m%thW-(){8o8Mlr>_l8^(9x%jk+ zY8ws$^DITM*^-%cVF3%&3u=Zf7TJjzN7~RRZzg<%UN!+n>k?iI8YpC?%UNO#aY7H! zbQzTNOs76sdenhYF&1b*#{Be5nt)oAdXYQcNRFtE;%4KY!MvN{JS8U0VRCySY}GDgyV@A>q(J0Xaenzi81I;5k~}ce zF?pthHnOQ`g|aR9BikcN^rvv95)1x}N^0*dO-t2jnl>PvhmDRh`U&iFD6|EBbG+Dk zK9jLe9bx+-b$VFSx&}|OTCBhn%C;-E=$3zRaF=yf>SZLLN^qgEAdDd?7!wq^askbC zN-S+!Aqq-#$xUBEiMN;F2$X31G6wPXxw_U`t*eTzu0j}SFT%GQISesk9fP>Ea&)II zK9G2bxnjF{l9--4I)L0~M|1CG+*rThvM!WZT!cVno^5I+76`j*UeDMh)wfMF?RM#tbu(ihI_%zz8&+Yh<7&{ph2eM3E-Y*YKyW64f; zavO>V)I;hqW>AkLcUHKktzVPDcs=Mih}^B}0k`@o@{X&0oPAV1nvA*Ck9lB!vMt%c zgAaHJz1tj6FqZB5#aA_LGvX!0eTX*@ryoUO`!!9gLu?q*v~LjKM7)7mb6wMNaY?;; z9UKMIC+8z=I-1F13qP%KE%d>&8Y)vfrG^^+6KvDFAV|pxJ-W&DDZd|wusY4{1K5eB0$6w zcFM6P>p<2CgJJI-2fI8E(Q3HpanTB(-nFKVARIK^1#Mmh&UjT{m-rJF35Xj76CVDF zG4@hnCvdjJYd6krBWg1wOJpeVrQ`OW=c}P5u-E5x8vnfp>nkqgkaKX+CnNK3-wc`s z56_nAEU-(mb01d8&59B-B6M8JIL^n=>%fr(a&#-78x&VV1ikB-*JLL~X^jj`JT@+3 ztHgA$bB(o~-1`oCZU58nem=I(`1?CHLi!8bUnh?KO_tSdc~-Wix6MS=*xvnc3`C3EoG@xZNt>o`VptekwomHo-C5XMa*WZVtdh2T>8``LK6xWl$%&T?B#%~Q?IHO=AL zrZ8!!t=|AX|D%1c`@1P5OqRaFd8;U02hj?zBP8ixV<4{FFDg9t3h@VP;5}dscIt6m(p_(4SKD&FNPaA#XXeruvkx9x|jke_aZNNC1?JaY1# diff --git a/PROJECT/out_p/prog3 b/PROJECT/out_p/prog3 new file mode 100755 index 0000000000000000000000000000000000000000..0dc01f3262cf1a0c30f4e98cc3e36828afa25f9f GIT binary patch literal 16552 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 Oak-^2%VpqV#lHXz>60D+ literal 0 HcmV?d00001