LINUX AVANZATO 2007
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44502
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
CONFERMO FUNZIONA!!
Grazie mille, per la dritta sulla waitpid.
Sulla funzione clone sto strovanda scarsissima documentazione, cmq grazie.
Ecco qui il programma funzionante
www.skynetweb.it/%5C/public%5Cprogetti%5Cclone_e_1s2.c
Grazie mille, per la dritta sulla waitpid.
Sulla funzione clone sto strovanda scarsissima documentazione, cmq grazie.
Ecco qui il programma funzionante
www.skynetweb.it/%5C/public%5Cprogetti%5Cclone_e_1s2.c
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44504
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ah, e grazie mille anche per la mmap!!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44524
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ecco l'esercizio con le directory.
Un solo punto: non capisco perchè prima di uscire mi da Segmentation Fault, sembra quasi che non esegua il return 0.
Un grazie a chi risolverà l'arcano.
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<sched.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<errno.h>
#include<sys/wait.h>
#include<string.h>
#include<sys/dir.h>
int main (int argc, char* argv[]){
DIR* dire = opendir(argv[1]);
struct dirent* info;
struct stat* stat_buf;
int max = 0, stat_ret;
char file[256];
while(info = readdir(dire)){
if(info->d_type!=DT_DIR){
stat_ret = stat(info->d_name, stat_buf);
if(stat_ret==0){
printf("%s -> %d Kbyte\n", info->d_name, stat_buf->st_size);
if(stat_buf->st_size > max){
max = stat_buf->st_size;
strcpy(file, info->d_name);
}
}
else
{
printf("Impossibile leggere il file %s\n", info->d_name);
return 0;
}
}
}
if(max!=0){
printf("Il file più grande è %s -> %d Byte\n", file, max);
}
else
{
printf("La directory è vuota\n");
}
closedir(dire);
return 0;
}
Un solo punto: non capisco perchè prima di uscire mi da Segmentation Fault, sembra quasi che non esegua il return 0.
Un grazie a chi risolverà l'arcano.
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<sched.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<errno.h>
#include<sys/wait.h>
#include<string.h>
#include<sys/dir.h>
int main (int argc, char* argv[]){
DIR* dire = opendir(argv[1]);
struct dirent* info;
struct stat* stat_buf;
int max = 0, stat_ret;
char file[256];
while(info = readdir(dire)){
if(info->d_type!=DT_DIR){
stat_ret = stat(info->d_name, stat_buf);
if(stat_ret==0){
printf("%s -> %d Kbyte\n", info->d_name, stat_buf->st_size);
if(stat_buf->st_size > max){
max = stat_buf->st_size;
strcpy(file, info->d_name);
}
}
else
{
printf("Impossibile leggere il file %s\n", info->d_name);
return 0;
}
}
}
if(max!=0){
printf("Il file più grande è %s -> %d Byte\n", file, max);
}
else
{
printf("La directory è vuota\n");
}
closedir(dire);
return 0;
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44526
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ecco come avrei fatto io la prova di laboratorio.
L'ho solo scritto ma non l'ho testato...quindi vedete voi se ci sono problemi.
phpfi.com/230781?lang=c
Ciao belli!
L'ho solo scritto ma non l'ho testato...quindi vedete voi se ci sono problemi.
phpfi.com/230781?lang=c
Ciao belli!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44542
da COM_EASYSOCIAL_GUEST_NAME
Allora, ho provato e c'erano un paio di warning con il gcc4.1 che uso io.
A me non funzionava proprio perchè non avevi allocato memoria per la variabile puntatore struct stat* stat_buf che poi passavi alla funzione stat.
Cambiato quello, funziona bene senza segmentation fault.
Comunque, secondo me, questa soluzione non risolve completamente il problema perchè quando si chiama la funzione stat, le si dovrebbe passare il percorso assoluto del file e non con quello relativo. Nel caso in cui si esegue il programma passando una directory diversa dalla corrente, il programma non funziona correttamente.
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Ecco l'esercizio con le directory.
Un solo punto: non capisco perchè prima di uscire mi da Segmentation Fault, sembra quasi che non esegua il return 0.
Un grazie a chi risolverà l'arcano.
Allora, ho provato e c'erano un paio di warning con il gcc4.1 che uso io.
A me non funzionava proprio perchè non avevi allocato memoria per la variabile puntatore struct stat* stat_buf che poi passavi alla funzione stat.
Cambiato quello, funziona bene senza segmentation fault.
Comunque, secondo me, questa soluzione non risolve completamente il problema perchè quando si chiama la funzione stat, le si dovrebbe passare il percorso assoluto del file e non con quello relativo. Nel caso in cui si esegue il programma passando una directory diversa dalla corrente, il programma non funziona correttamente.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
18 Anni 7 Mesi fa #44546
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic LINUX AVANZATO 2007
Vero, grazie per il suggerimento.
Si prega Accedi o Crea un account a partecipare alla conversazione.