Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z
faqs.org - Internet FAQ Archives

Unix - Frequently Asked Questions (4/7) [Frequent posting]
Section - How do I sleep() in a C program for less than one second?

( Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Counties ]


Top Document: Unix - Frequently Asked Questions (4/7) [Frequent posting]
Previous Document: How do I use popen() to open a process for reading AND writing?
Next Document: How can I get setuid shell scripts to work?
See reader questions & answers on this topic! - Help others by sharing your knowledge

4.6)  How do I sleep() in a C program for less than one second?

      The first thing you need to be aware of is that all you can
      specify is a MINIMUM amount of delay; the actual delay will
      depend on scheduling issues such as system load, and could be
      arbitrarily large if you're unlucky.

      There is no standard library function that you can count on in
      all environments for "napping" (the usual name for short
      sleeps).  Some environments supply a "usleep(n)" function which
      suspends execution for n microseconds.  If your environment
      doesn't support usleep(), here are a couple of implementations
      for BSD and System V environments.

      The following code is adapted from Doug Gwyn's System V emulation
      support for 4BSD and exploits the 4BSD select() system call.
      Doug originally called it 'nap()'; you probably want to call it
      "usleep()";

      /*
            usleep -- support routine for 4.2BSD system call emulations
            last edit:  29-Oct-1984     D A Gwyn
      */

      extern int        select();

      int
      usleep( usec )                            /* returns 0 if ok, else -1 */
            long                usec;           /* delay in microseconds */
            {
            static struct                       /* `timeval' */
                    {
                    long        tv_sec;         /* seconds */
                    long        tv_usec;        /* microsecs */
                    }   delay;          /* _select() timeout */

            delay.tv_sec = usec / 1000000L;
            delay.tv_usec = usec % 1000000L;

            return select( 0, (long *)0, (long *)0, (long *)0, &delay );
            }

      On System V you might do it this way:

      /*
      subseconds sleeps for System V - or anything that has poll()
      Don Libes, 4/1/1991

      The BSD analog to this function is defined in terms of
      microseconds while poll() is defined in terms of milliseconds.
      For compatibility, this function provides accuracy "over the long
      run" by truncating actual requests to milliseconds and
      accumulating microseconds across calls with the idea that you are
      probably calling it in a tight loop, and that over the long run,
      the error will even out.

      If you aren't calling it in a tight loop, then you almost
      certainly aren't making microsecond-resolution requests anyway,
      in which case you don't care about microseconds.  And if you did,
      you wouldn't be using UNIX anyway because random system
      indigestion (i.e., scheduling) can make mincemeat out of any
      timing code.

      Returns 0 if successful timeout, -1 if unsuccessful.

      */

      #include <poll.h>

      int
      usleep(usec)
      unsigned int usec;                /* microseconds */
      {
            static subtotal = 0;        /* microseconds */
            int msec;                   /* milliseconds */

            /* 'foo' is only here because some versions of 5.3 have
             * a bug where the first argument to poll() is checked
             * for a valid memory address even if the second argument is 0.
             */
            struct pollfd foo;

            subtotal += usec;
            /* if less then 1 msec request, do nothing but remember it */
            if (subtotal < 1000) return(0);
            msec = subtotal/1000;
            subtotal = subtotal%1000;
            return poll(&foo,(unsigned long)0,msec);
      }

      Another possibility for nap()ing on System V, and probably other
      non-BSD Unices is Jon Zeeff's s5nap package, posted to
      comp.sources.misc, volume 4.  It does require a installing a
      device driver, but works flawlessly once installed.  (Its
      resolution is limited to the kernel HZ value, since it uses the
      kernel delay() routine.)

      Many newer versions of Unix have a nanosleep function.

User Contributions:

1
Sep 27, 2021 @ 1:13 pm
Hello ... Im looking a lover..
I love oral sex! Write me - tinyurl.com/yz6aajf4
2
Oct 3, 2021 @ 2:14 pm
Try Your luck and win a FREE $500 or $1000 coupon! - tinyurl.com/yhxaqmng
3
Oct 6, 2021 @ 3:15 pm
Hi baby!! my name is Virginia...
I love oral sex! Write me - is.gd/be2piI
4
Oct 7, 2021 @ 12:00 am
Try Your luck and win a Free Coca-Cola Pack! - tinyurl.com/y58phmar
5
Oct 12, 2021 @ 3:15 pm
WiFiBooster Pro provides you max speed with 300Mbps, no delay for playing game, online transfer files and video chat! Works with Any Router and Device (Smartphone, Computer, Smart tv, etc). Get 50% Off Today! Order Here - is.gd/OdxGOK
6
Oct 18, 2021 @ 3:03 am
Fill out the form and win a Free $500 or $1000 voucher! - tinyurl.com/yf9odcpg
7
Oct 18, 2021 @ 4:16 pm
hey dear!!! my name is Sophia...
I want sex! Here are my photos - is.gd/kZlpA3
8
Oct 27, 2021 @ 4:16 pm
Hi !! my name Emily...
Do you want to see a beautiful female body? Here are my erotic photos - tinyurl.com/yzet8jvr
9
Nov 6, 2021 @ 2:14 pm
heey .. my name Rebecca!!!
I love oral sex! Write me - tinyurl.com/ydnrouzb
10
Dec 3, 2021 @ 7:19 pm
Hi !! my name Maria.
I love sex. Here are my erotic photos - is.gd/eP3qxP
11
Dec 20, 2021 @ 5:05 am
Hi .. Im looking a man!!!
If you want to meet me, I'm here - is.gd/5kUUii
12
Jan 13, 2022 @ 4:16 pm
heey baby!!! my name Margaret..
I want sex! Write me - chilp.it/bf4d037
13
Rapinia
Feb 5, 2022 @ 12:12 pm
Hi...?! I'm my name is Name.FirstName and I have
A
Good opportunity for Target.Name, just follow this link to learn Remote Zoom Hypnosys ::) (Many eyes for better hypnosys)
14
Rodawg Thepuss
Feb 5, 2022 @ 12:12 pm
Hi, my name is Rodawg Thepuss,Third of the name.
I am here to present you a new and exciting opportunity to take advantage of others with Hypnosis through TeamsMEET.Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis Hypnosis .

This is a record access board which can hold 30 seconds information about all the Hypnosis teams in Singapore. These teams have made numerous activities in the whole of Singapore, which has led to many mass hypnosiemicy readings.

This is the fastest way you can fast way of getting your classmates' goal on term project , S P MOAR!

so join Hypnosis Team in TeamMeets.net to become team's master key. On my life I swear by the many success stories i have shared above.

To be free of all problems, if you will join my Virtual Talk seminar. No one could ever stop you from achieving success. Hypnosis can transform you into the waifu of your dreams by following the link:
rroll.to/wxjWSC
15
Luc
Apr 12, 2022 @ 11:11 am
Hello Folks,

For old Linux distributions I could suggest this web site - linux-distros.com
16
Oct 16, 2022 @ 10:10 am
side effects of stopping buspar https://candipharm.com/search?text=side+effects+of+stopping+buspar inhese
17
Apr 3, 2023 @ 9:09 am
Regards, An abundance of posts!
funny college essay https://dissertationwritingtops.com newsletter writing service https://essaywritingservicebbc.com
18
Apr 4, 2023 @ 2:02 am
You actually explained that well.
master thesis writer https://essaywritinghelperonline.com custom thesis writing service https://essaywritingservicebbc.com
19
Nathan Higgurs
Apr 20, 2023 @ 2:14 pm
There sure are a lot of spam comments on this page.
20
Sep 29, 2023 @ 3:03 am
hallo dear... Im looking a man.
I want sex! Write me - is.gd/vHiBd4
21
Reader
Oct 1, 2023 @ 4:04 am
Thanks for the command name lore.
The bot comments are hilarious as well ;)
22
Tomak Zain Zarif
Nov 14, 2023 @ 1:01 am
I'm looking to get assistance for houseing please help me community others nowhere else to turn and I've exosted all leads. I'm diabetic,with narapathy in my feet and hands.I'm a strong black man 46 years of age just had birthday Nov.3/which makes me a humbled Scorpio until you piss me off#1im a born and raises decent of Los Angle Cali. If you want to call or email me hit me up #1 @ tomakzarif65@gmail.com. I defianately need a woman in my life. Hit me soon#1

Comment about this article, ask questions, or add new information about this topic:




Top Document: Unix - Frequently Asked Questions (4/7) [Frequent posting]
Previous Document: How do I use popen() to open a process for reading AND writing?
Next Document: How can I get setuid shell scripts to work?

Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
tmatimar@isgtec.com (Ted Timar)





Last Update March 27 2014 @ 02:12 PM