From 9a4d3eb9db4f7094377ea5a0316745650794e445 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 13:30:31 +0100 Subject: [PATCH 1/5] Creato esercizio con stringhe - nome e cognome --- 3.nome_cognome_string/nc | Bin 0 -> 13049 bytes 3.nome_cognome_string/nc.c | 80 +++++++++++++++++++++++++++++++ 3.nome_cognome_string/readme.txt | 1 + test/gino | 2 + test/gino~ | 0 test/test | Bin 8724 -> 8581 bytes test/test.c | 19 ++++++-- 7 files changed, 99 insertions(+), 3 deletions(-) create mode 100755 3.nome_cognome_string/nc create mode 100644 3.nome_cognome_string/nc.c create mode 100644 3.nome_cognome_string/readme.txt create mode 100755 test/gino create mode 100755 test/gino~ diff --git a/3.nome_cognome_string/nc b/3.nome_cognome_string/nc new file mode 100755 index 0000000000000000000000000000000000000000..d249e2cc4832dba85792f621b4f5aba9a153714d GIT binary patch literal 13049 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 Am;e9( literal 0 HcmV?d00001 diff --git a/3.nome_cognome_string/nc.c b/3.nome_cognome_string/nc.c new file mode 100644 index 0000000..6f885a4 --- /dev/null +++ b/3.nome_cognome_string/nc.c @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + + char buf[100]; + char bufn1[100]; + char bufn2[100]; + int num1,num2,sum; + + + fprintf (stdout,"Digitare 2 numeri separati da uno spazio\n"); + fscanf (stdin, "%99[^\n]%*c",buf); + sscanf (buf,"%s %s", bufn1, bufn2); + num1 = atoi(bufn1); + num2 = atoi(bufn2); + sum = num1 + num2; + + fprintf(stdout,"La somma e' %d\n", sum); + + + + fprintf (stdout,"Digitare un nome\n"); + fscanf (stdin, "%99[^\n]%*c",bufn1); + fprintf (stdout,"Digitare un cognome\n"); + fscanf (stdin, "%99[^\n]",bufn2); + + char bufsum[200]; + + + + strcpy(bufsum, bufn1); + strcat(bufsum, "-"); + strcat(bufsum, bufn2); + + fprintf(stdout,"%s\n",bufsum); + + + strcpy(bufsum, bufn2); + strcat(bufsum, "-"); + strcat(bufsum, bufn1); + fprintf(stdout,"%s\n",bufsum); + + + if (strcmp(bufn1,bufn2) == 0){ + fprintf(stdout,"Stringhe uguali\n"); + } else { + fprintf(stdout,"Stringhe diverse\n"); + } + + + char iniziali[3]; + iniziali[0] = bufn1[0]; + iniziali[1] = bufn2[0]; + iniziali[2] = 0; + + + fprintf(stdout,"Iniziali %s\n",iniziali); + + char code[150]; + char sumc[150]; + sprintf (sumc,"%d",sum); + + strcpy(code, iniziali); + strcat(code, sumc); + + fprintf(stdout,"Codice %s\n",code); + + + + + return 0; +} \ No newline at end of file diff --git a/3.nome_cognome_string/readme.txt b/3.nome_cognome_string/readme.txt new file mode 100644 index 0000000..7d13419 --- /dev/null +++ b/3.nome_cognome_string/readme.txt @@ -0,0 +1 @@ +il programma legge in in input prima due numeri restituendo la somma, poi un nome e congome formando diverse concatenazioni \ No newline at end of file diff --git a/test/gino b/test/gino new file mode 100755 index 0000000..513e29c --- /dev/null +++ b/test/gino @@ -0,0 +1,2 @@ +ehehifdgfdgdf +ehi \ No newline at end of file diff --git a/test/gino~ b/test/gino~ new file mode 100755 index 0000000..e69de29 diff --git a/test/test b/test/test index ea2045591641cce6c482edf793002ecf80cae61c..a3cc6fbe5150061014a1010d4fdf77104b8da79a 100755 GIT binary patch literal 8581 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 VUGcs|7JD5n$w)RE&kC7S@oz3rk?{Zk literal 8724 zcmeHMPl#JZ9R9u5wY%-=rcy-FLRyTC3cD**h$zxXgRge0ZFeih+RobW`{&BOB^kc$5C7qrB0?_%e^;d%QyW-xi)7U zqI@44zCC7~IBWyl7*MKJd#_w8sB*11ukqk|tQtP9IgR*!rj%Dw#YVR3^}M34^FtAU8{Sw+IXMC+IE}xVuKd(zCM+D zxzkDg_}i7$PoF|x3`ItE>+)=X*#}GFei_IAiLmiHDHM)z&W`g1{zjbswQ>FF#is97 z$6p=CJjyvZ!JbCp_15A&{hl%S2VmNBC>$pyw>7JPRlq7>6|f3e1*`&Af$b@9#%=%Z zUixd+T^afck?zWwtM2kcuQ(!8%R>{WPAtn*J9Fpz%s(VQM2%4l*Tqc4n`3f)6wkJjeWX>_WP&BS%^8Y(OttG&Uc$uG2e0TntI99 z+oZAXRspMkRlq7>6|f3e1*`&A0jq#jz$#!BunPPS3hX_Y=4}WIs^NmTQvW8OTmq+pnE*9AX-GZ;Ud% z%HxiK(+#?hIXVNV2Oib9cZ@ #include +#include +#include +#include +#include #include int main (int index, char** in_data){ - char buf[50]; - fscanf(stdin,"%10[^\n]",buf); - fprintf(stdout,"%s",buf); + int fd; + int data; + void * buf; + buf = malloc (100); + + fd = open ("gino",O_WRONLY | O_APPEND,00700); + lseek (fd,2,SEEK_SET); + write (fd,(void *)"ehi",3); + + + close(fd); return 0; From d25cf1c199a5a978365970d3bb9411cf1defc736 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 14:29:01 +0100 Subject: [PATCH 2/5] Creato programma che usando i file legge il file sample e lo ricopia in sample_copied contando righe,vocali,numeri e caratteri --- 4.file_read_count/copycount | Bin 0 -> 8843 bytes 4.file_read_count/copycount.c | 87 ++++++++++++++++++++++++++++++++ 4.file_read_count/readme.txt | 1 + 4.file_read_count/sample | 6 +++ 4.file_read_count/sample_copied | 6 +++ 4.file_read_count/sample~ | 6 +++ 6 files changed, 106 insertions(+) create mode 100755 4.file_read_count/copycount create mode 100644 4.file_read_count/copycount.c create mode 100644 4.file_read_count/readme.txt create mode 100644 4.file_read_count/sample create mode 100755 4.file_read_count/sample_copied create mode 100644 4.file_read_count/sample~ diff --git a/4.file_read_count/copycount b/4.file_read_count/copycount new file mode 100755 index 0000000000000000000000000000000000000000..0aa79f389264abb86c009cd5cd9baf21936a5501 GIT binary patch literal 8843 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 +#include +#include +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + + + int fd,fd2,ridden,wrote, tot,vocali,cifre,righe; + tot = vocali = cifre = righe = 0; + char buf; + fd = open ("sample",O_RDONLY); + fd2 = open ("sample_copied", O_CREAT | O_WRONLY,00700); + if (fd < 0){ + fprintf(stderr,"Error reading file %d\n",errno); + exit(-1); + } + if (fd2 < 0){ + fprintf(stderr,"Error creating file %d\n",errno); + exit(-1); + } + + for (ridden = read (fd,&buf,1) ; ridden == 1 ;ridden = read (fd,&buf,1)){ + + + if (isdigit(buf) != 0){ + cifre++; tot++; + wrote = write (fd2,&buf,1); + if (wrote != 1){ + fprintf(stderr,"Error writing to file %d\n",errno); + exit(-1); + } + continue; + } + + if (buf == 'a' || buf == 'e' || buf == 'i' || buf == 'o' || buf == 'u'){ + vocali++;tot++; + wrote = write (fd2,&buf,1); + if (wrote != 1){ + fprintf(stderr,"Error writing to file %d\n",errno); + exit(-1); + } + continue; + } + + if (buf == '\n'){ + righe++;tot++; + wrote = write (fd2,&buf,1); + if (wrote != 1){ + fprintf(stderr,"Error writing to file %d\n",errno); + exit(-1); + } + continue; + } + + + tot++; + wrote = write (fd2,&buf,1); + if (wrote != 1){ + fprintf(stderr,"Error writing to file %d\n",errno); + exit(-1); + } + + + } + + if (ridden < 0){ + fprintf(stderr,"Error reading file %d\n",errno); + exit(-1); + } + + fprintf (stdout, "Numero vocali %d\n", vocali); + fprintf (stdout, "Numero righe %d\n", righe); + fprintf (stdout, "Numero cifre %d\n", cifre); + fprintf (stdout, "Numero caratteri %d\n", tot); + + close(fd);close(fd2); + + + return 0; +} \ No newline at end of file diff --git a/4.file_read_count/readme.txt b/4.file_read_count/readme.txt new file mode 100644 index 0000000..b4ccd4e --- /dev/null +++ b/4.file_read_count/readme.txt @@ -0,0 +1 @@ +il programma legge il file sample e lo ricopia in sample_copied contango righe,vocali,numeri e caratteri \ No newline at end of file diff --git a/4.file_read_count/sample b/4.file_read_count/sample new file mode 100644 index 0000000..631333f --- /dev/null +++ b/4.file_read_count/sample @@ -0,0 +1,6 @@ +aafdsfdsfdfdfdfdf +4343 +fdsd342 +fdfdsfFJSNJNDJS +dfdsfa + diff --git a/4.file_read_count/sample_copied b/4.file_read_count/sample_copied new file mode 100755 index 0000000..631333f --- /dev/null +++ b/4.file_read_count/sample_copied @@ -0,0 +1,6 @@ +aafdsfdsfdfdfdfdf +4343 +fdsd342 +fdfdsfFJSNJNDJS +dfdsfa + diff --git a/4.file_read_count/sample~ b/4.file_read_count/sample~ new file mode 100644 index 0000000..0cb7e0b --- /dev/null +++ b/4.file_read_count/sample~ @@ -0,0 +1,6 @@ +fdsfdsfdfdfdfdf +4343 +fdsd342 +fdfdsfFJSNJNDJS +dfdsf + From 687e30491eaa8fa9d05e4edbf695cdae58ffc3a0 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 15:58:25 +0100 Subject: [PATCH 3/5] implementato un programma che legge da linea di ocmando il percorso di una directory e fornisce in output statistiche relative ai file: nome,inode,grandezza in byte, check se il file e' regolare e in tal caso i primi 10 caratteri --- 5.list_file_directory/list | Bin 0 -> 13312 bytes 5.list_file_directory/list.c | 85 +++++++++++++++++++++++++++++++ 5.list_file_directory/readme.txt | 1 + 3 files changed, 86 insertions(+) create mode 100755 5.list_file_directory/list create mode 100644 5.list_file_directory/list.c create mode 100644 5.list_file_directory/readme.txt diff --git a/5.list_file_directory/list b/5.list_file_directory/list new file mode 100755 index 0000000000000000000000000000000000000000..bc51c773df54565f5aab94a16d12c24b59ed55cc GIT binary patch literal 13312 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 Tz8X;#?bVpvI=bY&dgOlrhr`|; literal 0 HcmV?d00001 diff --git a/5.list_file_directory/list.c b/5.list_file_directory/list.c new file mode 100644 index 0000000..f0ce9cb --- /dev/null +++ b/5.list_file_directory/list.c @@ -0,0 +1,85 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + + if (index < 2){ + fprintf(stderr,"Please specify a directory into command line\n"); + exit(-1); + } + + if (index > 2){ + fprintf(stderr,"Please enter only 1 path\n"); + exit(-1); + } + + + char * path; + path = *(in_data + 1); + + DIR * directory; + directory = opendir (path); + if ( directory == NULL){ fprintf(stderr, "Not a directory\n"); exit(-1);} + + + struct dirent * dir_entry; + struct stat file_stat; + char full_path [2048]; + + int fd,ridden; + char buf[10]; + + for(dir_entry = readdir(directory); + dir_entry != NULL; + dir_entry = readdir(directory)){ + + strcpy (full_path,path); + strcat (full_path,"/"); + strcat (full_path,dir_entry->d_name); + + if (stat (full_path,&file_stat) != 0 ) {fprintf(stderr, "Error retrieving file info\n"); exit(-1);} + + fprintf (stdout,"Name %20s",dir_entry->d_name); + fprintf (stdout," / "); + fprintf (stdout,"Inode %10d",file_stat.st_ino); + fprintf (stdout," / "); + fprintf (stdout,"Size %10d",file_stat.st_size); + fprintf (stdout," / "); + + if (S_ISREG (file_stat.st_mode)){ + fprintf (stdout,"%23s","Regular File / "); + fd = open (full_path,O_RDONLY); + if (fd < 0){ + fprintf(stderr,"Error reading file %s %d\n",dir_entry->d_name,errno); + exit(-1); + } + ridden = read (fd,buf,10); + buf[ridden] = 0; + fprintf (stdout,"%10s",buf); + + close (fd); + } else { + fprintf (stdout,"%23s","Not a Regular File / "); + + } + fprintf (stdout,"\n"); + + } + + if (errno != 0){ + fprintf(stderr, "Error reading in the directory\n"); exit(-1); + } + + + + return 0; +} \ No newline at end of file diff --git a/5.list_file_directory/readme.txt b/5.list_file_directory/readme.txt new file mode 100644 index 0000000..424cf2b --- /dev/null +++ b/5.list_file_directory/readme.txt @@ -0,0 +1 @@ +il programma legge da liena di ocmando il percorso di una directory e fornisce in output statistiche relative ai file: nome,inode,grandezza in byte, check se il file e' regolare e in tal caso i primi 10 caratteri \ No newline at end of file From fb267c3d929ed268545c8082114ff6ffc357e3dc Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 17:38:14 +0100 Subject: [PATCH 4/5] Creato programma waitc in cui il parent crea un figlio. Quest'ultimo riceve un numero da terminale e subito manda un sigusr1 al padre. Il parent attende un usr1 o un sigchld e poi termina. --- 6.process_and_signal/file_communication.c | 72 ++++++++++++++++++++++ 6.process_and_signal/waitc | Bin 0 -> 9017 bytes 6.process_and_signal/waitc.c | 72 ++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 6.process_and_signal/file_communication.c create mode 100755 6.process_and_signal/waitc create mode 100644 6.process_and_signal/waitc.c diff --git a/6.process_and_signal/file_communication.c b/6.process_and_signal/file_communication.c new file mode 100644 index 0000000..3ab6823 --- /dev/null +++ b/6.process_and_signal/file_communication.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void sigusr1action (int signal){ + + fprintf(stdout,"Parent:Ricevuto SIGUSR1\n"); + +} + +void sigchldaction (int signal){ + + fprintf(stdout,"Parent:Ricevuto SIGCHLD\n"); + + +} + + +int main (int index, char** in_data){ + + int duplicate; + duplicate = fork(); + if (duplicate < 0) + exit(-1); + if (duplicate == 0){ + //child + + int numero; + fscanf(stdin,"%d",&numero); + kill (getppid(),SIGUSR1); + fprintf(stdout,"Child:Process %d terminated\n",getpid()); + + }else{ + // parent + + struct sigaction sigusr1structure; + sigusr1structure.sa_handler = sigusr1action; + sigusr1structure.sa_flags = 0; + + + struct sigaction sigchldstructure; + sigchldstructure.sa_handler = sigchldaction; + sigchldstructure.sa_flags = 0; + + + sigaction (SIGUSR1, &sigusr1structure, NULL); + sigaction (SIGCHLD, &sigchldstructure, NULL); + + int status; + int pid; + + for (pid = waitpid(-1,&status,0);pid > 0;pid = waitpid(-1,&status,0)){ + fprintf(stdout,"Parent:Child %d terminated\n",pid); + } + + fprintf(stdout,"Parent:Process %d terminated\n",getpid()); + } + + + + + return 0; +} + diff --git a/6.process_and_signal/waitc b/6.process_and_signal/waitc new file mode 100755 index 0000000000000000000000000000000000000000..231ba34e14d440202b287d8bee5a97653e1343f1 GIT binary patch literal 9017 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 literal 0 HcmV?d00001 diff --git a/6.process_and_signal/waitc.c b/6.process_and_signal/waitc.c new file mode 100644 index 0000000..3ab6823 --- /dev/null +++ b/6.process_and_signal/waitc.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void sigusr1action (int signal){ + + fprintf(stdout,"Parent:Ricevuto SIGUSR1\n"); + +} + +void sigchldaction (int signal){ + + fprintf(stdout,"Parent:Ricevuto SIGCHLD\n"); + + +} + + +int main (int index, char** in_data){ + + int duplicate; + duplicate = fork(); + if (duplicate < 0) + exit(-1); + if (duplicate == 0){ + //child + + int numero; + fscanf(stdin,"%d",&numero); + kill (getppid(),SIGUSR1); + fprintf(stdout,"Child:Process %d terminated\n",getpid()); + + }else{ + // parent + + struct sigaction sigusr1structure; + sigusr1structure.sa_handler = sigusr1action; + sigusr1structure.sa_flags = 0; + + + struct sigaction sigchldstructure; + sigchldstructure.sa_handler = sigchldaction; + sigchldstructure.sa_flags = 0; + + + sigaction (SIGUSR1, &sigusr1structure, NULL); + sigaction (SIGCHLD, &sigchldstructure, NULL); + + int status; + int pid; + + for (pid = waitpid(-1,&status,0);pid > 0;pid = waitpid(-1,&status,0)){ + fprintf(stdout,"Parent:Child %d terminated\n",pid); + } + + fprintf(stdout,"Parent:Process %d terminated\n",getpid()); + } + + + + + return 0; +} + From 695cc7dc351e8a64d72baf463203cc92f9559b61 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 19:35:49 +0100 Subject: [PATCH 5/5] file_communication : il parent crea un figlio e si comportano come un client server. Da linea di comando si passano tre paramentri: 2 numeri e una operazione. Esempio: 10 5 + . Le operazioni supportate sono + - * /. il file share_file viene utilizzato come file di sharing in cui il server mette i dati e il client la risposta. Il server informa il clinet mediane un usr1 qunado i file sono pronti mentre il client risponde con un usr1 al parent qunado ha completato l'operazione --- 6.process_and_signal/file_communication | Bin 0 -> 13761 bytes 6.process_and_signal/file_communication.c | 121 ++++++++++++++++++---- 6.process_and_signal/readme.txt | 2 + 6.process_and_signal/share_file | 2 + da_vedere | 2 +- da_vedere~ | 13 +++ 6 files changed, 119 insertions(+), 21 deletions(-) create mode 100755 6.process_and_signal/file_communication create mode 100644 6.process_and_signal/readme.txt create mode 100755 6.process_and_signal/share_file create mode 100644 da_vedere~ diff --git a/6.process_and_signal/file_communication b/6.process_and_signal/file_communication new file mode 100755 index 0000000000000000000000000000000000000000..d8b49cac71e8626a9d56ab7f5b4adbfcc8e7c82d GIT binary patch literal 13761 zcmeHOeQ;FQb-%kSfe;1>@o6CD*_B*Dtu^9P*f?1s37)8I6h2aH>^zp;m9%EHtJ!@E zk|%cL$V>dZQ7UJOhsk6nq~q~0ai^tiLcke>02kqDaplR3gQsb$cuc)(oCbdZ#vkhM z+;{Kpdk?*7o0S?qu1kMGI`lo8F6Ff0S=j0#;)AS zS%EdMX)M6*V2jukAf@;PcnMK6C+T(3w4`OCo)5GHzXq=fG|?xu%!aFgUXE&xY1&%uv; zfXXkVA8vei&m+NYcirFj&ksC(?5(-27pVU2_)#0YUzG7wdI?*I-_oyqZ}GYhv(i0) z*i#T}l^x>TOD_0f7yLmNoW_5$_7Az>&$!?xUGSs}KIVd-cfo1c6#SfNJAldT-|vF| zu?zll7yPUXe$)kj&IMoMf)F2E3EY+9NBi*cHe=@40Vze_D;?hAq5oP;>QLZQyOQ4lRPbAJd3Wib-M0dJ_ z(Ky@G*1DldTj5_@$gL{mR`^$AT)g7XSI7}!;w3gr*7Rb1`xxyN^rJLC8l6Eq#M{Ud zHiz>*_P*fL3!~Gh#jD^cjW5~FDeV!r@tk>)^G0U{?HMx3c_W;BrI5sYP6a?~My4_g zPJNN7(t`UW2)e+6%e|S36$@@XziKVGb^l&&!O13>8Z5Z3+&Jvjp zS#WWL@}k2QT-+jX{D=jgFB<_pYQgEul1UwSzbtna9+KM%cgWRYOx1x`%g)O3iPb-x zr?82dAK_ZDB!C?8T~wSOpFpbl0rBKw`7zEvM?AS!euVSiA>K#)QO-X>Jh@W-Fz1uR zlMCgCIR7~Do>hlXe_)okfoa}=g#Ms)AQ7@x`^Yuce2m$p&G{s)di z5ljE+F9Wy*gxF8Ps!v~TAnx>MK6T)-M_qR@Rozjsq?y4fMm(xfnn9(BIsd>bWlQ&y z$hwQkx6hS^koAzdU5}mZ=;-iQETKCDl6&B274(o^z3MoJU|ZQ^r&K7K7=P^S&=8fu zq)Ow-&tXS7HENtWK0^I8-gt$)b(s81HAZt6(9_q>a)GDczXH@axfoDb&6d>E@;WWo z>qpSat278`yOlzRpW-?RR_+LsDp#cAtKr{`~Nyx`|R_HiOZ`YO{MA}Z%;Meq`~QdA~&&D zAy#oLLqhAz(<8$*)F&Z5c=Bt!t-+(591MW88rKUQy$D&q@JxGew!ImM_C{EWN-V0!(nMxE>A_w7fksTxmGw|VG ztHyct+L$`njs_kaGKU|{po@2YhWWk+tqjxd0^l$JHQRDMtgbY@PcO|a23BxTx?3B{=bPk~J24x&In>0RV?P=0B8fQ@F3AjkWR$w!uZs%o4&MSaToZ$S1fx-{croH?<} zbp3s^$fn|0zJSvFec04r8G&aGpN6buDV-$ATaQV(EPXfdVp`yPMc7_cLsq*pzAI zmtnXmS-g%Qr`K7<%CdYIP5=AJb=nSSKwqKlVE8py2QPdMa8Xy~AEpapHeIVH*L8NQk?BJAa^r~$raL`5Q^6iWn04a+l1!Ma39{d8V&EhRv2P#Cl@fO5 zMBZ$0EgG~o^=Bv*8_y2fJ?8MU3%kd^U8UW_dS0tWtomY`5w3>A)iq65SleLDdLqDc zZH8WbrOo(OHTLR9t8v=D-_W-7Qls%jt8rC5{e`d9_;qd(np88t(-+tO3*Eo988_OD ztIfvm8z<)cMjbedGyZb=JvIAiHM}%dUD=imS1)KoPHD^P)wONeZ&feHvEFdDVo5&@ z+($O+%(I){PhfQ)DMvR4u21N<|B_xqiTj4jWw;N?;(p@#MEV19hhW~T&sbFS2Px$1W$EALhFdeB3$0ArnDrJiKIf0 zl+k#nLZwO_f$>C5xSZ9bYLkCZ z(t`G6A{0rbl$x-jN0QyqcuF_ zB6O0C3M(|q`{bg~#T@2YCla|`tiiXPSC%CEA)f@E9ha+r?5+nfS$*F!#L

E&avJ#6DE|pfy)5_r$V)Xy$20gH!}|PciM4!P z36)m^dJ(^Iy6*sGU;kd|fhpR|z`)c$_kQ0uSmNC|lk`wO{s})7eKb7`%&l~51a6JM ztr5620=Gus)(HH+90A;?^CUa(BS+X<Jl!KvQcZ&I;AWEgaZAYi(=X~{oH#GX<%-}pi*h0Ue@^80YNw(OF)#ZB zJs{`{g1#i^F+tA>`lg`&A?Q^>r<4b{ig|+GE$A9SHwyXIx>*~`ST)ouf8S|(5y7k~5P(5kVE}6qO zx=6Bz`Qr&a;&0s0TBip)1=kr*`}d^rOjU=Eaem^uf~hX%5BJ5%94>-kOV}oC#ExhG>*@Mem&BQYX=yVCBi{H$o!Emts{wtEUhaHS;;YfNKYhF zP-v3JLnuU>!R}}X3KM7s7e8;?Y-djjwdpAh4^qxy`(N{mAVIz?*HMEv0InFvLC+!9 zB>i4ue}oLJDJj3*8vs{~lTbKUyp$BPJV(z)R(ahU;J7Xttma(t;*@Vj5gwruQor1H z4hf)Eh{|ttWyPj=?jc;K<0s`uya8~GjR@dbL22KjzDs$zKYRli?MYHz?sKY8DEBo~ z;mJ9E-vml~ijKF0>A@8(b!0ZWRXiTNN+!sfL zyecY6{m%YBV5g#|L-&RS+Y5!p%FUSA5 zI7g2Q`7I9n9p%WtK9d)hx>8lzgRmeN_Ir(3qF8Q9cU!JQnK1{}e zN&l4c(yre?)~a8|FN`li0g|k5az$R^zeRynUf$Q_g#4Hk6jaJd`kq7nxU!qqJg#t3 z@N<(Z>X-Z#WT-9K|1lwdUNLJ3VlueOeoNpJWXS&I5)f3%FLU5jmy)Ejke9l7fw+9A zn3*rFAo5a9!o*A8l^D^Ur6#vi4AfV^`tg(FCifNECMMH=o(?9YPaTC${bsGnuRd7Y z;0@eVNbxlCoU|7DV2M2c?08Axe%g+g;+zUtA)fcaqvbhdE%f1}mFJ5cFJtoDu;bI1 zJP+)6dEtKAj!!S_-*)^qCii7KKBEwqYR6|XxsTfM3MThQJ6>6ctF+^@nB33ocvT@@ z)Q-=_zO&m3@w^XjQRTj3E%f2(MD7=Md|n}r$&Sx2Jh#~K1x&76J6?=ev*Qb`EYF+k zUFt>vC{{-9G=7tf+nc;r6{~jWeHXZA5`Uoml_D6O^?eu+54+hPZUEH#Wn5%uHY%!=~o>t?L6s%)A?tO-;&B-1YQZhIxpr?;xF_1H?QBnb!q2< z3;tUd{9_kG+$R7_Pi_GaqJuaDe61t_lBrX zaaWZ1w<%EixI}(SU#BV6^DARBe3OscT`u@4;EIs764j;tBQAK{1s`z154qq!b-{-@ zK7&zE2_^mw5A*`ZZ$1Zq<?zSA^m;@KCX>NFEfPl* zbo0XxH9pwd1YMRA9(2vLO>J8?G`4A5Hg4S3vR&KWxS_3uy2}HZL#Z@AdgJwqGmbhC zkb%t<#B4@V+cA2JVg^DN&GGxZ4i# zux&deCf6Kj`kwAAc0_eMi!FT>k>Ji6wkUT^3#SrV7e4cf?+}cfrglLGkV=F z%!AeKkY#pgK51I5@$tpVYneI!VyZQ~)Dm;TgVPb%o=zp}MR2=_YcERE08)6n9nm)L z)3!!B5pEDkHpPOeR3ybHF5X_tjHh>CW|X`gq$x+Fz8$3Ke>-A^;@dG{en{BQeVhMp MfTJ3Z>9=G51-L#zk^lez literal 0 HcmV?d00001 diff --git a/6.process_and_signal/file_communication.c b/6.process_and_signal/file_communication.c index 3ab6823..2a1265f 100644 --- a/6.process_and_signal/file_communication.c +++ b/6.process_and_signal/file_communication.c @@ -1,6 +1,5 @@ #include #include -#include #include #include #include @@ -9,6 +8,9 @@ #include #include #include +#include +#include + void sigusr1action (int signal){ @@ -16,16 +18,64 @@ void sigusr1action (int signal){ } -void sigchldaction (int signal){ - - fprintf(stdout,"Parent:Ricevuto SIGCHLD\n"); - +void sigusr1caction (int signal){ + fprintf(stdout,"Child:Ricevuto SIGUSR1\n"); + int fd; + fd = open ("share_file", O_RDWR | O_APPEND); + if (fd < 0){ + fprintf(stderr,"Child: Error reading file - Errno%d\n",errno); + kill(getpid(),SIGKILL); + } + char a [100]; + char b [100]; + char op; + lseek(fd,0,SEEK_SET); + char data[2]; + data[1]=0; + char input[100]=""; + for (read(fd,data,1);data[0]!='\n';read(fd,data,1)){ + strcat(input,data); + } + sscanf(input,"%s%*c%s%*c%c",a,b,&op); + + int a_data, b_data,calcolo; + char calcolo_s[100]; + + a_data= atoi(a); + b_data = atoi(b); + + if (op=='+'){ + calcolo = a_data + b_data; + }else{ + if (op=='-'){ + calcolo = a_data - b_data; + }else{ + if (op=='*'){ + calcolo = a_data * b_data; + }else{ + + calcolo = a_data / b_data; + + } + } + } + sprintf(calcolo_s,"%d",calcolo); + write (fd,calcolo_s,strlen(calcolo_s)); + + kill(getppid(),SIGUSR1); } + + int main (int index, char** in_data){ + if (index < 4 || index > 4) { + fprintf(stderr,"Parametri command line non validi\n"); + exit(-1); + } + int duplicate; duplicate = fork(); if (duplicate < 0) @@ -33,39 +83,70 @@ int main (int index, char** in_data){ if (duplicate == 0){ //child - int numero; - fscanf(stdin,"%d",&numero); - kill (getppid(),SIGUSR1); + + + struct sigaction sigusr1cstructure; + sigusr1cstructure.sa_handler = sigusr1caction; + sigusr1cstructure.sa_flags = 0; + + + + sigaction (SIGUSR1, &sigusr1cstructure, NULL); + pause(); + fprintf(stdout,"Child:Process %d terminated\n",getpid()); }else{ // parent + int fd; + fd = open ("share_file", O_CREAT | O_WRONLY | O_EXCL,00700); + if (fd < 0){ + fprintf(stderr,"Parent:Share_file already exists\n"); + fd = open ("share_file", O_WRONLY | O_TRUNC); + if (fd < 0){ + fprintf(stderr,"Parent:Error writing to file - Err no%d\n",errno); + char cmd [100] = "kill -P "; + char pid [10]; + sprintf (pid,"%d",getpid()); + strcat(cmd,pid); + system(cmd); + + } + } + + write (fd,*(in_data+1),strlen(*(in_data+1))); + write (fd," ",1); + write (fd,*(in_data+2),strlen(*(in_data+2))); + write (fd," ",1); + write (fd,*(in_data+3),strlen(*(in_data+3))); + write (fd,"\n",1); + + close(fd); + + struct sigaction sigusr1structure; sigusr1structure.sa_handler = sigusr1action; sigusr1structure.sa_flags = 0; - - struct sigaction sigchldstructure; - sigchldstructure.sa_handler = sigchldaction; - sigchldstructure.sa_flags = 0; sigaction (SIGUSR1, &sigusr1structure, NULL); - sigaction (SIGCHLD, &sigchldstructure, NULL); int status; int pid; - for (pid = waitpid(-1,&status,0);pid > 0;pid = waitpid(-1,&status,0)){ - fprintf(stdout,"Parent:Child %d terminated\n",pid); - } - - fprintf(stdout,"Parent:Process %d terminated\n",getpid()); + kill (duplicate,SIGUSR1); + + for (pid = waitpid(-1,&status,0);pid > 0;pid = waitpid(-1,&status,0)){ + fprintf(stdout,"Parent:Child %d terminated\n",pid); + } + + fprintf(stdout,"Parent:Process %d terminated\n",getpid()); + } - - + return 0; } diff --git a/6.process_and_signal/readme.txt b/6.process_and_signal/readme.txt new file mode 100644 index 0000000..e22bd09 --- /dev/null +++ b/6.process_and_signal/readme.txt @@ -0,0 +1,2 @@ +waitc : il parent crea un figlio. Quest'ultimo riceve un numero da terminale e subito manda un sigusr1 al padre. Il parent attende un usr1 o un sigchld e poi termina. +file_communication : il parent crea un figlio e si comportano come un client server. Da linea di comando si passano tre paramentri: 2 numeri e una operazione. Esempio: 10 5 + . Le operazioni supportate sono + - * /. il file share_file viene utilizzato come file di sharing in cui il server mette i dati e il client la risposta. Il server informa il clinet mediane un usr1 qunado i file sono pronti mentre il client risponde con un usr1 al parent qunado ha completato l'operazione \ No newline at end of file diff --git a/6.process_and_signal/share_file b/6.process_and_signal/share_file new file mode 100755 index 0000000..8bccfef --- /dev/null +++ b/6.process_and_signal/share_file @@ -0,0 +1,2 @@ +152 11 - +141 \ No newline at end of file diff --git a/da_vedere b/da_vedere index c40d1d3..fdbb81f 100644 --- a/da_vedere +++ b/da_vedere @@ -10,4 +10,4 @@ FLAG2 = -o clear: rm -f -- per esempio -vedi union, esercizi stringa, file, little e bigendian, dati esadecimali. +piu file di giannino per i socket, vedi anche fli fopen,etc sugli stream diff --git a/da_vedere~ b/da_vedere~ new file mode 100644 index 0000000..72c4b58 --- /dev/null +++ b/da_vedere~ @@ -0,0 +1,13 @@ +nel make file +@echo compilazione di $< in $@ + +FLAG1= -c + +FLAG2 = -o + + + +clear: + rm -f -- per esempio + +piu file di giannino per i socket