.


:




:

































 

 

 

 





 

, , . $?.

( ):

− , ( ABORT EXIT main)

− 16- .

 

.

 

, :

1. ˳ . , . , ', .

2. . . , , ' .

3. . , - . , ' . - ' , ' .

4. . , . . , .

5. . , , , . ' , .

 

, , -1, NULL, EOF. , .

( 80%) errno , . errno . , errno .

errno , , "E", EACCES EINVAL. errno , . <errno. h>.

sys_errlist, .

sys_nerr . errno .

POSIX :

E2BIG -

EACCES - ³

EAGAIN -

EBADF -

EBADMSG -

EBUSY -

ECANCELED -

ECHILD -

EDEADLK -

EDOM -

EEXIST -

EFAULT -

EFBIG -

EINPROGRESS -

EINTR -

EINVAL -

EIO - -

EISDIR -

EMFILE -

EMLINK - '

EMSGSIZE -

ENAMETOOLONG - '

ENFILE -

ENODEV -

ENOENT -

ENOEXEC - ,

ENOLCK -

ENOMEM - '

ENOSPC - '

ENOSYS -

ENOTDIR -

ENOTEMPTY -

ENOTSUP -

ENOTTY - -

ENXIO -

EPERM -

EPIPE -

ERANGE -

EROFS -

ESPIPE -

ESRCH -

ETIMEDOUT -

EXDEV - '

.

 

#include <errno.h> /* */

extern int errno;

extern char *sys_errlist[];

int value;

.

if((value = sys_call(...)) < 0){

printf("Error:%s(%d)\n",sys_errlist[errno],errno);

exit(errno); /* */

}

 

sys_call(...)-

 

2. errno

 

UNIX errno

 

strerror() - . ֳ . <string. h>.

 

. , . open() , - -1.

 

fd = open("inputfile.txt",O_RDONLY);

if(fd == -1){

fprintf(stderr,"error opening file: %s\n", strerror(errno)); exit (1);

}

 

struct stat statbuf. ³ , fd . C fstat ( fd) statbuf

if (fstat (fd, &statbuf)==-1)

{ printf("Fstat failed; %s\n",strerror(errno)); }

 

perror() - errno sys_errlist stderr. ( <stdio.h>). , ' , .

 

1.

# Include <stdio.h>

int main (void)

{chars [] = "Hello, World!";

If (printf ("% s \ n", s)> 0)

{perror("Can ' t print ");

return -1;}

return 0;}

2.

# Include <stdio.h>

int main (void)

{FILE * fp;

fp = fopen ("perror.dat", "r");

if (! Fp)

perror (" . \ n ");

return 0;}

 

3.

# Include <unistd.h>

# include <fcntl.h>

# include <stdio.h>

int main (void)

{int fn1, fn2;

fn1 = open ("data1", O_RDONLY);

if (fn1 == -1)

perror (" ");

fn2=open("data2",O_WRONLY|O_TRUNC | O_CREAT,

S_IREAD | S_IWRITE);

if (fn2 == -1)

perror (" ");}

 

䳿, , : , , , . , , .

 

3. atexit()

, C C + + return main exit (). , , . exit () .

exit () :

# include <unistd.h>

void exit (int status);

status - - .

.

, exit (0) , -.

䳿 . 32 (exit handler), - , exit (), . LIFO atexit ():

ATEXIT - , , , (E) AX, . ATEXIT 0. .

 

# Include <stdlib.h>

int atexit (void (* func) (void);

:

# include <stdio.h>

# include <stdlib.h>

void handler1 ()

{printf

("handler1 \

n");}

void handler2 ()

{printf

("handler2 \

n");}

void handler3 ()

{printf

("handler2 \

n");}

int main ()

{atexit

(& handler1);

atexit (& handler2);

atexit (& handler3);

return

(0);}





:


: 2015-09-20; !; : 703 |


:

:

, .
==> ...

1471 - | 1294 -


© 2015-2024 lektsii.org - -

: 0.023 .