Hairy Problem! lseek over 4G


 
Thread Tools Search this Thread
Top Forums Programming Hairy Problem! lseek over 4G
# 1  
Old 11-13-2009
Network Hairy Problem! lseek over 4G

recently my project needs me to lseek a position over 4G size....
i found in linux or unix the parameters are all ulong 32 bits...the limit dooms the movement of a position over 4G
I was told that i should lseek64 to meet my need... but i have no idea where i can get the function neither by "man lseek64"....
do you how to use the function "lseek64" or similiar functions by which i can jump over 4G, thanx .SmilieSmilieSmilieSmilieSmilieSmilieSmilieSmilieSmilie
# 2  
Old 11-13-2009
Never heard of a lseek64 function. The one that should be used is llseek.
# 3  
Old 11-13-2009
Quote:
Originally Posted by jlliagre
Never heard of a lseek64 function. The one that should be used is llseek.
haha, Smilie
one person one answer...
llseek..
let me check..thanx

---------- Post updated at 04:19 AM ---------- Previous update was at 04:08 AM ----------

Quote:
Originally Posted by macroideal
haha, Smilie
one person one answer...
llseek..
let me check..thanx
Got it.
I Love this forum...seems great

I dont know how to use the functionSmilie llseek
# 4  
Old 11-13-2009
Exactly the same way as you use lseek.

Please post your code and your OS version.

Last edited by jlliagre; 11-13-2009 at 06:46 AM.. Reason: typos
# 5  
Old 11-13-2009
Quote:
Originally Posted by jlliagre
Exactly the same way as you use lseek.

Please post you code and you OS version.
SUSE 9
i got llseek, when compiling it is recommended to use "lseek64",
but in seek64 function the parameter is __offset64_t..i think the __offset64_t must be struct.. how can i fill the struct before i use the function...

BTB, when do you usually look up some functions of linux or unix.....Can you introduce some great websites to me. thanx very muchSmilie
# 6  
Old 11-13-2009
GNU C has four calls to 64 bit lseek:
This is a good reference site site news
lseek64
lseek64(3) - Linux man page
# 7  
Old 11-13-2009
Quote:
Originally Posted by macroideal
SUSE 9
i got llseek, when compiling it is recommended to use "lseek64",
but in seek64 function the parameter is __offset64_t..i think the __offset64_t must be struct.. how can i fill the struct before i use the function...

BTB, when do you usually look up some functions of linux or unix.....Can you introduce some great websites to me. thanx very muchSmilie
The best websites for linux functions are just HTML conversions of Linux manpages. Hunting for "man whatever" when I don't have it is often helpful but that's very rare; I've got manpages for lseek64 and have no idea why you don't.

Code:
LSEEK64(3)                 Linux Programmer's Manual                LSEEK64(3)



NAME
       lseek64 - reposition 64-bit read/write file offset

SYNOPSIS
       #define _LARGEFILE64_SOURCE
       #include <sys/types.h>
       #include <unistd.h>

       off64_t lseek64(int fd, off64_t offset, int whence);

DESCRIPTION
       The lseek(2) family of functions reposition the offset of the open file
       associated with the file descriptor fd to offset bytes relative to  the
       start,  current position, or end of the file, when whence has the value
       SEEK_SET, SEEK_CUR, or SEEK_END, respectively.

       For more details, return value, and errors, see lseek(2).

       Four interfaces are available: lseek(2), lseek64(), llseek(2), and  the
       raw system call _llseek(2).

   lseek
       Prototype:

           off_t lseek(int fd, off_t offset, int whence);

       lseek(2)  uses  the type off_t.  This is a 32-bit signed type on 32-bit
       architectures, unless one compiles with

           #define _FILE_OFFSET_BITS 64

       in which case it is a 64-bit signed type.

   lseek64
       Prototype:

           off64_t lseek64(int fd, off64_t offset, int whence);

       The library routine lseek64() uses a 64-bit type even when off_t  is  a
       32-bit  type.   Its  prototype (and the type off64_t) is available only
       when one compiles with
           #define _LARGEFILE64_SOURCE

       The function lseek64() is available since glibc 2.1, and is defined  to
       be an alias for llseek().

   llseek
       Prototype:

           loff_t llseek(int fd, loff_t offset, int whence);

       The  type loff_t is a 64-bit signed type.  The library routine llseek()
       is available in libc5 and glibc and works without special defines.  Its
       prototype  was  given in <unistd.h> with libc5, but glibc does not pro-
       vide a prototype.  This is bad, since a  prototype  is  needed.   Users
       should  add  the above prototype, or something equivalent, to their own
       source.  When users complained about data loss caused by a  miscompila-
       tion of e2fsck(8), glibc 2.1.3 added the link-time warning

           "the `llseek' function may be dangerous; use `lseek64' instead."

       This  makes this function unusable if one desires a warning-free compi-
       lation.

   _llseek
       All the above functions are implemented in terms of this  system  call.
       The prototype is:

           int _llseek(int fd, off_t offset_hi, off_t offset_lo,
                       loff_t *result, int whence);

       For more details, see llseek(2).

SEE ALSO
       llseek(2), lseek(2), feature_test_macros(7)

COLOPHON
       This  page  is  part of release 3.18 of the Linux man-pages project.  A
       description of the project, and information about reporting  bugs,  can
       be found at http://www.kernel.org/doc/man-pages/.



Linux                             2004-12-11                        LSEEK64(3)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed Or Grep Problem OR Terminal Problem?

I don't know if you guys get this problem sometimes at Terminal but I had been having this problem since yesterday :( Maybe I overdid the Terminal. Even the codes that used to work doesn't work anymore. Here is what 's happening: * I wanted to remove lines containing digits so I used this... (25 Replies)
Discussion started by: Nexeu
25 Replies

2. Programming

Problem with lseek call.

The following code: int fd; if (fd = open("mem", O_RDONLY) == -1) return 1; if (lseek(fd, 0, SEEK_SET) == -1) { char *buf = malloc(512); buf = strerror(errno); printf("%s\n", buf); return 1; } always returns with "illegal seek"... (2 Replies)
Discussion started by: Sir_Tomasz
2 Replies

3. AIX

Backup: The lseek call failed

Hi, We are facing issues while backing up our 1205 GB filesystem on LTO5 Tape. During backup the "backup: The lseek call failed." messages were generated, I want to know why these messages were generating AIX version is: 6100-08-00-0000 backup: The date of this level 0 backup is Mon Mar 11... (4 Replies)
Discussion started by: m_raheelahmed
4 Replies

4. Programming

what is the main difference between difference between using nonatomic lseek and O_APPEND

I think both write at the end of the file ...... but is there a sharp difference between those 2 instruction ..... thank you this is my 3rd question today forgive me :D (1 Reply)
Discussion started by: fwrlfo
1 Replies

5. UNIX for Dummies Questions & Answers

Understanding lseek

I tried to use lseek system call to determine the number of bytes in a file. To do so, I used open system call with O_APPEND flag to open a file. As lseek returns the current offset so I called lseek for opened file with offset as zero and whence as SEEK_CUR. So I guess it must return the number of... (3 Replies)
Discussion started by: Deepak Raj
3 Replies

6. UNIX for Dummies Questions & Answers

Lseek implementation

Hi everybody, i've been googling for ages now and gotten kinda desperate... The question, however, might be rather trivial for the experts: What is it exactly, i.e. physically, the POSIX function (for a file) "lseek" does? Does it trigger some kind of synchronization on disk? Is it just for the... (4 Replies)
Discussion started by: Humudituu
4 Replies

7. IP Networking

Problem with forwarding emails (SPF problem)

Hi, This is rather a question from a "user" than from a sys admin, but I think this forum is apropriate for the question. I have an adress with automatic email forwarding and for some senders (two hietherto), emails are bouncing. This has really created a lot of problems those two time so I... (0 Replies)
Discussion started by: carwe
0 Replies

8. UNIX for Dummies Questions & Answers

lseek() equivalent

I know there is lseek() function that will allow to write or read from certain position in the file. Is there similar function that will let do same but for array rather then file? (9 Replies)
Discussion started by: joker40
9 Replies

9. AIX

user login problem & Files listing problem.

1) when user login to the server the session got colosed. How will resolve? 2) While firing the command ls -l we are not able to see the any files in the director. but over all view the file system using the command df -g it is showing 91% used. what will be the problem? Thanks in advance. (1 Reply)
Discussion started by: pernasivam
1 Replies

10. Programming

lseek in c

sir, i used lssek as this lseek(fp,-10,2); i am not getting any output i dont now why can you explan sir.. Thanks in advance, Arunkumar (4 Replies)
Discussion started by: arunkumar_mca
4 Replies
Login or Register to Ask a Question