|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Il C non perdona...nemmeno sui file!
Perche' non va'? La write fallisce dicendo: "Failed to write: [Err 9]: Bad file descriptor"
Codice:
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int filefd;
long cont,written,toWrite;
char *str;
printf("\n\n");
if (argc!=3)
{
printf ("2 parameters needed\n");
printf ("Usage: produceByte FILENAME SIZE\n\n");
exit(1);
}
str=(char *) malloc(sizeof(char[1000]));
filefd=open(argv[1],O_CREAT,0777);
cont=0;
written=0;
sscanf(argv[2],"%ld",&toWrite);
while (written<toWrite)
{
sprintf(str,"%ld-",cont);
int err=write(filefd,str,strlen(str));
if (err<0)
{
char msgerror[1024];
sprintf(msgerror,"Failed to write: [Err %d]",errno);
perror(msgerror);
fflush(stderr);
exit(1);
}
written+=strlen(str);
printf("Written: %ld\n",written);
cont++;
}
close(filefd);
return(0);
}
__________________
Il mio case prima della "cura" --> Il mio case...dopo! .oO (Firefox Myths) Myths Oo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Hai creato il file senza indicare che ci vuoi anche scrivere. Inoltre ti consiglio di usare O_TRUNC, per azzerare un eventuale file esistente.
filefd=open(argv[1],O_RDWR|O_CREAT|O_TRUNC,0777);
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
__________________
Il mio case prima della "cura" --> Il mio case...dopo! .oO (Firefox Myths) Myths Oo. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:48.


















