- Messaggi: 13
- Ringraziamenti ricevuti 0
Linux Avanzato 2008-2009
- annalisa boccitto
-
- Offline
- New Member
-
Riduci
Di più
16 Anni 6 Mesi fa #95775
da annalisa boccitto
Ciao, la seconda che hai detto (cit. Quelo)
Risposta da annalisa boccitto al topic Linux Avanzato 2008-2009
Ciao a tutti,
dove è possibile trovare le dispense del corso Linux Avanzato? Sono per caso disponibili pubblicamente, oppure bisogna essere iscritti al corso per poterle avere?
Grazie mille!
John
Ciao, la seconda che hai detto (cit. Quelo)
Si prega Accedi o Crea un account a partecipare alla conversazione.
- annalisa boccitto
-
- Offline
- New Member
-
Riduci
Di più
- Messaggi: 13
- Ringraziamenti ricevuti 0
16 Anni 6 Mesi fa #95777
da annalisa boccitto
Risposta da annalisa boccitto al topic Linux Avanzato 2008-2009
Scusate se ripropongo queste mie domande
P.S. il prof. mi ha risposto a questa domanda:
ma credo che siano passate inosservate2) sul sito del corso c'e' scritto che la lezione 4 e' stata dedicata al codice di Linux. Di cosa ha parlato? Ha pubblicato qualche dispensa sull'argomento?
3) riguardo alle distribuzioni da utilizzare, vi e' sembrato molto fiscale?
Sinceramente non mi va di spianare la mia distro, tra l'altro gia' faticosamente attrezzata per lavorare sulla tesi, senza un valido motivo
P.S. il prof. mi ha risposto a questa domanda:
dicendomi che l'argomento verra' trattato nella seconda parte del corso
1) nella dispensa "code di processi" contenuta nel blocco stda si fa riferimento ad una
Citazione:
dispensa studio codice CFS
che pero' non riesco a trovare. Qualcuno sa se e' argomento della seconda parte del corso, oppure semplicemente Bovet si e' dimenticato di pubblicarla?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- chiara sabbatella
-
- Offline
- Senior Member
-
Riduci
Di più
- Messaggi: 62
- Ringraziamenti ricevuti 0
16 Anni 6 Mesi fa #95882
da chiara sabbatella
Risposta da chiara sabbatella al topic Linux Avanzato 2008-2009
Ragazzi qualcuno mi può spiegare perchè in questo prog dove si unsa la chiamata pipe(), scrive il carattere ma non riesce a leggerlo?
Grazie 10000
int p1[2];
void func( void )
{
int r = 0, p = 0;
char buf[1];
sleep(2);
printf("Sono il figlio\n");
r = read(p1[0], buf, 1);
if( r == -1 )
{
perror("Bad read:");
exit(EXIT_FAILURE);
}
printf("Ho letto %d caratteri. Il valore letto è : %c\n", r, buf[0]);
}
int main()
{
int p = 0, fd = 0, w = 0, pter = 0, s = 0;
char stack[2048], buf[1];
buf[0] = 'c';
fd = clone( (void*)func, (stack+2048), CLONE_VM, NULL );
printf("il processo creato ha pid %d\n", fd);
if( fd == -1 )
{
perror("clone:");
exit(EXIT_FAILURE);
}
p = pipe(p1);
if( p == -1 )
{
perror("Bad pipe:");
exit(EXIT_FAILURE);
}
w = write(p1[1], buf, 1);
if (w == -1)
{
perror("Bad write:");
exit(EXIT_FAILURE);
}
pter = waitpid(fd, &s, __WCLONE);
printf("Ho aspettato il processo %d\n", pter);
return 0;
}
Grazie 10000
int p1[2];
void func( void )
{
int r = 0, p = 0;
char buf[1];
sleep(2);
printf("Sono il figlio\n");
r = read(p1[0], buf, 1);
if( r == -1 )
{
perror("Bad read:");
exit(EXIT_FAILURE);
}
printf("Ho letto %d caratteri. Il valore letto è : %c\n", r, buf[0]);
}
int main()
{
int p = 0, fd = 0, w = 0, pter = 0, s = 0;
char stack[2048], buf[1];
buf[0] = 'c';
fd = clone( (void*)func, (stack+2048), CLONE_VM, NULL );
printf("il processo creato ha pid %d\n", fd);
if( fd == -1 )
{
perror("clone:");
exit(EXIT_FAILURE);
}
p = pipe(p1);
if( p == -1 )
{
perror("Bad pipe:");
exit(EXIT_FAILURE);
}
w = write(p1[1], buf, 1);
if (w == -1)
{
perror("Bad write:");
exit(EXIT_FAILURE);
}
pter = waitpid(fd, &s, __WCLONE);
printf("Ho aspettato il processo %d\n", pter);
return 0;
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- chiara sabbatella
-
- Offline
- Senior Member
-
Riduci
Di più
- Messaggi: 62
- Ringraziamenti ricevuti 0
16 Anni 6 Mesi fa #95883
da chiara sabbatella
Risposta da chiara sabbatella al topic Linux Avanzato 2008-2009
Ragazzi qualcuno mi può spiegare perchè in questo prog dove si unsa la chiamata pipe(), scrive il carattere ma non riesce a leggerlo?
Grazie 10000
P.S. Scusate, nel messaggio di prima mancava un pezzo.
/*
Con clone() si creano due processi, uno scrive immediatamente,
uno legge ciò che è stato scritto dopo due secondi e lo stampa
*/
#include <unistd.h>
#include <sched.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
int p1[2];
void func( void )
{
int r = 0, p = 0;
char buf[1];
sleep(2);
printf("Sono il figlio\n");
r = read(p1[0], buf, 1);
if( r == -1 )
{
perror("Bad read:");
exit(EXIT_FAILURE);
}
printf("Ho letto %d caratteri. Il valore letto è : %c\n", r, buf[0]);
}
int main()
{
int p = 0, fd = 0, w = 0, pter = 0, s = 0;
char stack[2048], buf[1];
buf[0] = 'c';
fd = clone( (void*)func, (stack+2048), CLONE_VM, NULL );
printf("il processo creato ha pid %d\n", fd);
if( fd == -1 )
{
perror("clone:");
exit(EXIT_FAILURE);
}
p = pipe(p1);
if( p == -1 )
{
perror("Bad pipe:");
exit(EXIT_FAILURE);
}
w = write(p1[1], buf, 1);
if (w == -1)
{
perror("Bad write:");
exit(EXIT_FAILURE);
}
pter = waitpid(fd, &s, __WCLONE);
printf("Ho aspettato il processo %d\n", pter);
return 0;
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
16 Anni 6 Mesi fa #95884
da Olimpia
Risposta da Olimpia al topic Linux Avanzato 2008-2009
Aggiungendo CLONE_FILES ai flag della clone funziona tutto
Si prega Accedi o Crea un account a partecipare alla conversazione.
- chiara sabbatella
-
- Offline
- Senior Member
-
Riduci
Di più
- Messaggi: 62
- Ringraziamenti ricevuti 0
16 Anni 6 Mesi fa #95885
da chiara sabbatella
Risposta da chiara sabbatella al topic Linux Avanzato 2008-2009
E questo??????
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int fd[2];
int main()
{
int f = fork(), p = 0, w = 0, r = 0;
char buf[1], buf2[1];
buf[0] = 'c';
if( f == 0 )
{
printf("Sono il figlio e ho pid %d mio padre è %d\n", getpid(), getppid());
if((p = pipe(fd)) == -1)
perror("Bad pipe");
if((w = write(fd[1], buf, 1)) == -1)
perror("Bad write");
else
printf("Ho scritto %d byte\n", w);
}else
{
sleep(1);
printf("Sono il padre e ho pid %d\n", getpid());
if((r = read(fd[0], buf2, 1)) == -1)
perror("Bad read");
else
printf("Ho letto il byte %c", buf2[0]);
waitpid(-1, 0, 0);
}
}
Ciao e grz
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int fd[2];
int main()
{
int f = fork(), p = 0, w = 0, r = 0;
char buf[1], buf2[1];
buf[0] = 'c';
if( f == 0 )
{
printf("Sono il figlio e ho pid %d mio padre è %d\n", getpid(), getppid());
if((p = pipe(fd)) == -1)
perror("Bad pipe");
if((w = write(fd[1], buf, 1)) == -1)
perror("Bad write");
else
printf("Ho scritto %d byte\n", w);
}else
{
sleep(1);
printf("Sono il padre e ho pid %d\n", getpid());
if((r = read(fd[0], buf2, 1)) == -1)
perror("Bad read");
else
printf("Ho letto il byte %c", buf2[0]);
waitpid(-1, 0, 0);
}
}
Ciao e grz
Si prega Accedi o Crea un account a partecipare alla conversazione.