Sponsored Content
Top Forums Programming select() system call takes longer than the timeout specified Post 302410945 by Driver on Wednesday 7th of April 2010 08:07:16 AM
Old 04-07-2010
Quote:
where sockfd is one of the fd's select is calling. You HAVE to do this or you break select(). Period.

I dunno what the libcurl folks did, but I think this is your problem - blocking.
Just from looking at that single post and its title, I believe you misunderstood the discussion/conclusion in that thread.

When the kernel people speak of "breaking" select(), they mean altering the behavior of their select() implementation. The topic of that debate seems to be whether a select() hit on a blocking socket GUARANTEES that a subsequent recvmsg() call will not block. It doesn't guarantee that, but most programmers expect it to, hence the question of whether it is right for select() to "lie" about state.

However, select() is better thought of as a temporary snapshot of I/O state. If select() indicates readability on a file descriptor, that does not mean that a subsequent read operation is guaranteed not to block.

Likewise, if stat() indicates that a file is 1363 bytes big, that does not mean that a subsquent open() + read() will be able to retrieve 1363 bytes from it because the file may have been deleted or resized in the meantime.

-------------

As for the original problem:

As others have stated, I also believe that you should make sure you are really measuring the right thing. It is highly unlikely that select() doesn't behave "as advertised".

Make sure that your gettimeofday() calls only measure select(). Perhaps you didn't just measure select() but also time for reading and processing data?

When you used gettimeofday() to record time, did you also make sure to use those same data structures when printing the time difference? How did you print it - did you maybe mix up seconds and microseconds? Are you sure your print statements aren't adding any extra delay because you didn't flush or unbuffer your output file?

Please post your real code. What you posted originally does not contain the gettimeofday() calls you said you used to measure it.

jim mcnamara's suggestion to trace the process is also good - If possible, run your program through "strace ./prog" and see whether it really spends a long time in select().
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

how to differentiate system call from library call

Hi, Ho do I differentiate system call from library call? for example if I am using chmod , how do I find out if it is a system call or library call? Thanks Muru (2 Replies)
Discussion started by: muru
2 Replies

2. UNIX for Advanced & Expert Users

Login Process takes longer

Hello. Since Yesterday, I notice that after giving telnet IP or SSH IP - it takes long time to display login: , I mean earlier after entering Server name It used to immediately ask for login ID and then password. But, now it takes min of 2-3 minute to ask for password. Where can I check,... (12 Replies)
Discussion started by: panchpan
12 Replies

3. UNIX for Advanced & Expert Users

how to use exceptfds argument in select system call

Hi, Can any one tell me how to use the fourth argument of select system call.I saw example "port forwarding" on the net,but it was too complex for me to understand.Can any one explain me about the usage of exceptfds argument of select system call with simple example. Thanks. (2 Replies)
Discussion started by: bvijaya
2 Replies

4. UNIX and Linux Applications

Syb15 Query takes longer, help me out

When i run the below query in syb15 (with syb 12.5.X backward compatibilty) environment it runs 45min where as the same in syb12.5.1 it takes only 7-10min. But the main thing is stld_date(in the below query) does not covered in the index of that table. Also main_table is a huge table. So is it... (1 Reply)
Discussion started by: prsam
1 Replies

5. Programming

Having some trouble with select() call in C

I have this while loop: while (notdone) { //Set the timers waitd.tv_sec = 5; waitd.tv_usec = 0; FD_ZERO(&tempreadfds); FD_ZERO(&tempwritefds); FD_ZERO(&readfds); /* initialize the read fd set */ FD_ZERO(&writefds); /* initialize the write fd set */ ... (1 Reply)
Discussion started by: Legend986
1 Replies

6. Shell Programming and Scripting

script to monitor the process system when a process from user takes longer than 15 min run.

get email notification from from system when a process from XXXX user takes longer than 15 min run.Let me know the time estimation for the same. hi ,any one please tell me , how to write a script to get email notification from system when a process from as mentioned above a xxxx user takes... (1 Reply)
Discussion started by: kirankrishna3
1 Replies

7. Shell Programming and Scripting

system call

Trying to figure out a load issue with a webserver. I have traced a php script and noticed the following connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS (Operation now in progress) <0.000035> poll(, 1, 2000) = 1 () <0.000120>... (5 Replies)
Discussion started by: rajan007
5 Replies

8. Homework & Coursework Questions

program to send messages to parent using pipes and select system call

Write a program using select, which will create some number of child processes that continuously send text messages to the parent process using pipes. Each child has its own pipe that it uses to communicate with the parent. The parent uses select () to decide what pipes should be processed to... (1 Reply)
Discussion started by: ripssingh
1 Replies

9. UNIX for Advanced & Expert Users

Issues with select system call

1. We are using client-server model communication using TCP/IP protocol 2. The TCP socket created with O_NON_BLOCK flag 3. When we make attempt to send large data to other process, the send is partially successful. It means we attempt to send 90K data, OS sent only 40K data successfully. ... (3 Replies)
Discussion started by: MasthanDudekula
3 Replies

10. Shell Programming and Scripting

Timeout to abolish ssh connection command it takes too long

Hi, I am running a ssh connection test in a script, how can I add a timeout to abolish the process if it takes too long? ssh -i ~/.ssh/ssl_key useraccount@computer1 Thank you. - j (1 Reply)
Discussion started by: hce
1 Replies
select.h(3HEAD) 						      Headers							   select.h(3HEAD)

NAME
select.h, select - select types SYNOPSIS
#include <sys/select.h> DESCRIPTION
The <sys/select.h> header defines the timeval structure, which includes the following members: time_t tv_sec /* seconds */ suseconds_t tv_usec /* microseconds */ The time_t and suseconds_t types are defined as described in <sys/types.h>. See types.h(3HEAD). The sigset_t type is defined as described in signal.h(3HEAD). The timespec structure is defined as described in <time.h>. See time.h(3HEAD). The <sys/select.h> header defines the fd_set type as a structure. The following is defined as a macro: FD_SETSIZE Maximum number of file descriptors in an fd_set structure. Inclusion of the <sys/select.h> header can make visible all symbols from the headers <signal.h>, <sys/time.h>, and <time.h>. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ SEE ALSO
select(3C), signal.h(3HEAD), time.h(3HEAD), types.h(3HEAD), attributes(5), standards(5) SunOS 5.10 10 Sep 2004 select.h(3HEAD)
All times are GMT -4. The time now is 10:33 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy