![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Problem with Mail command: exec failed. errno=2. | hawkman2k | UNIX for Dummies Questions & Answers | 1 | 04-29-2008 06:50 AM |
| CRITICAL 11/08/05 12:06:26 _getsockopt reports error. errno: 239 | niks.20 | High Level Programming | 0 | 11-14-2005 10:25 AM |
| errno pb | dts | High Level Programming | 3 | 08-06-2004 06:51 AM |
| login error after sys-unconfig, errno = 13 | roing | UNIX for Dummies Questions & Answers | 14 | 02-08-2004 08:25 AM |
| Getting errno in a Multithreaded program | S.Vishwanath | High Level Programming | 2 | 03-25-2002 06:58 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
Hi errno in sys/stat.h
How should I use errno in a c program and what info does it have .
I am working with directories and files. So can any one tell me How to access errno?I am using the stat() function on \etc directory and I am alble to access only the half of the directories.I am not able to access other half and stat()call returns a -1.So what is wrong? Thanks in advance. |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
Using the system errno is very important in C programming. All system calls will tell you there is an error by returning a -1, or NULL, or EOF, but only the errno variable, which is set by the system can tell you what the error is. To use it in a program, you need simply include the errno header file and define it as an external int.
Code:
#include <stdio.h>
#include <errno.h>
extern int errno;
int main ( int argc , char * const argv [ ] , char * const envp [ ] )
{
return (0);
}
Code:
#include <stdio.h>
#include <errno.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/stat.h>
extern int errno;
int main ( int argc , char * const argv [ ] , char * const envp [ ] )
{
char * cpString = "/file/that/is/not/there";
struct stat Status;
if ( stat (cpString, &Status) == -1 )
{
perror (cpString);
}
return (0);
}
# ./a.out
/file/that/is/not/there: No such file or directory
Code:
#include <stdio.h>
#include <errno.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/stat.h>
extern int errno;
int syserr ( const char Format [ ] , char * S1 , char * S2 )
{
fprintf (stderr, Format, ( S1 ? S1 : "" ), ( S2 ? S2 : "" ));
fprintf (stderr, " (%d, %s)\n", errno,
( (S1 = strerror (errno)) ? S1 : "undefined error" ));
return (errno);
}
int main ( int argc , char * const argv [ ] , char * const envp [ ] )
{
char * cpString = "/file/that/is/not/there";
struct stat Status;
if ( stat (cpString, &Status) == -1 )
{
syserr ("Unable to %s %s", "status", cpString);
}
return (0);
}
# ./a.out
Unable to status /file/that/is/not/there (2, No such file or directory)
|
|
#3
|
|||
|
|||
|
Hi
Thank you,hegemaro!
So,Can I use it with stat() call? If it has a integer value ,How can I know which value is which? Like there are many type of errors that can be generarted like no access permissions etc.So how can a assosiate a particular errno no with a particular type of error. |
|
#4
|
|||
|
|||
|
The values for errno for any system call are defined in the manual pages for that system call. Being an integer, yes, you can test it against any of the constant values as defined in errno.h (actually /usr/include/sys/errno.h under Solaris 8). A code snippet might look like this:
Code:
if ( stat (cpString, &Status) == -1 )
{
if ( errno == ENOENT )
{
fprintf (stderr, "The file doesn't exist\n");
}
else if ( errno == ENOPERM )
{
fprintf (stderr, "I don't have permission to read that file\n");
}
else
{
syserr ("Unable to %s %s", "status", cpString);
}
}
|
|
#5
|
|||
|
|||
|
Hi!
Thank you!got it.
|
|
#6
|
||||
|
||||
|
According to the latest Posix Standard:
Quote:
extern int errno; is not legal anymore. You are supposed to include errno.h and depend on that include file to define errno for you. You will get unpredicable behavior if you use the external variable in a multi-threaded process. |
|
#7
|
|||
|
|||
|
Perderabo,Than you!
I want to use it to know whether stat() call functions in a way desired or if it exited with an error then what made it exit. I will try your way too.Thank you! |
|||
| Google The UNIX and Linux Forums |