03-24-2019
You are jumping the gun at the moment; UNDERSTAND what is going on first!
I mentioned that there is a FLAW. Try to understand that when messing with HW you need to know what you are doing.
Read the URL and understand to get a grasp of what is going on; although the code will work 99.999% of the time there is a condition known as a "race condition".
Race condition - Wikipedia
Although not strictly a race condition it is a _pseudo_race condition.
An explanation:
If you move the mouse a tiny fraction of a second AFTER the 'if' line and before the condition is finalised then the two variables will be the same.
Assuming you have this _polling_ as you put it in a loop then this will be missed on the second variable and the next time in the loop the two values will be the same again and so it will seem no-one has moved the mouse. This, although NOT strictly a race condition per-se is close enough.
AFAIAC there is no easy cure using sequential code like a shell script so you HAVE to be aware of such situations.
So be aware; it is these subtleties that can cause headaches in the future.
As for _polling_ you could put the code inside a 'while' loop,
while true and exit the loop via a
break command using the conditional statement if that is what you want.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
hi all,
i am new to unix. Actually i need to compare two string and print the result...
suppose type='sun'
if; then
echo good morning
else
echo good night
fi
whether the comparison is right r we need to use eq????
help me please.... :confused:
thanks in advance.... (1 Reply)
Discussion started by: ithirak17
1 Replies
2. Shell Programming and Scripting
Hi all,
I am trying to compare two strings/dates, but its throwing error::Syntax error at line 5:
Please help !!
Any alternate way to compare two dates is also fine....
logdate1=`date -u '+%Y.%m.%d %T'`
sleep 5
logdate2=`date -u '+%Y.%m.%d %T'`
if test... (5 Replies)
Discussion started by: prashant43
5 Replies
3. Shell Programming and Scripting
Hi,
Here is my script
#!/bin/ksh
echo $pick_typ
if ];then
echo "inside if"
else
echo "outside if"
fi
when ever i pass CUS as parameter to this script am getting the correct value CUS, however if i pass ORD as parameter it is not coming inside if it is echoing else "Outside... (12 Replies)
Discussion started by: bhargav20
12 Replies
4. Shell Programming and Scripting
Hi Im trying to write a script that compare a text string.
But it fails, I think it adds a extra line feed to the result and fails beacuse of that.
The script.
DT=`date +'%Y%m%d%H%M%S'`
#ALARM_BIN=/users/alarms/ssa/alarms/bin
QUEUE_THR=10
#unset offset
#offset="***Server reports data... (3 Replies)
Discussion started by: vettec3
3 Replies
5. Shell Programming and Scripting
Hello , I want to Compare with 2 strings and get if they are True or not
please would like some help on this
#!bin/ksh
echo "Enter Name 1"
read Name1
echo "Enter Name 2"
read Name2
echo "------------------------"
echo "First Name: $Name1"
echo "Second Name: $Name2"
echo... (25 Replies)
Discussion started by: shatztal
25 Replies
6. Shell Programming and Scripting
hi..
i have a problem to compare two string
my code is like that
if ]
then
echo "both data are correct"
elif ]
echo "data is wrong"
fi
here $username1 is taking value from file.. (7 Replies)
Discussion started by: shubhig15
7 Replies
7. Shell Programming and Scripting
hello guyzz
please help me out..
I have two file a.sh and b.sh it contains two string SD109 ,SD108 .
I want to compaere these two string .
If a.sh>b.sh
do rebasing
record time.
else it shows no rebasing required.
Thanks. (2 Replies)
Discussion started by: abhijtr
2 Replies
8. Shell Programming and Scripting
DEV> vi test_if_statement.sh
"test_if_statement.sh" 9 lines, 205 characters
proc_out="Normal completion"
proc_out_comp="Normal completion"
echo 'proc_out:'$proc_out
echo 'proc_out_comp:'$proc_out_comp
if then
echo 'match'
else
echo 'no_match'
fi
~
~
~
~
~
~
~
~
~ (4 Replies)
Discussion started by: cartrider
4 Replies
9. Shell Programming and Scripting
I have 2 values V_1_4_4_b1 and V_1_5_1_RC_b1. I would need to compare them and determine if the 1st value is greater, less or equal
than the 2nd value. The result should need to have a return value.
I have below code in bash function but it seems it is not comparing it correctly. Any help will... (8 Replies)
Discussion started by: aderamos12
8 Replies
10. UNIX for Beginners Questions & Answers
Hi,
I am trying to do the following to see if "ip" is already present in a file.
if ; then
echo "hi"
else
echo "hello"
fi
I am seeing errors on the if statement. Can someone please correct the syntax for me? Thanks (2 Replies)
Discussion started by: waince
2 Replies
LEARN ABOUT OPENSOLARIS
_lwp_cond_reltimedwait
_lwp_cond_wait(2) System Calls _lwp_cond_wait(2)
NAME
_lwp_cond_wait, _lwp_cond_timedwait, _lwp_cond_reltimedwait - wait on a condition variable
SYNOPSIS
#include <sys/lwp.h>
int _lwp_cond_wait(lwp_cond_t *cvp, lwp_mutex_t *mp);
int _lwp_cond_timedwait(lwp_cond_t *cvp, lwp_mutex_t *mp,
timestruc_t *abstime);
int _lwp_cond_reltimedwait(lwp_cond_t *cvp, lwp_mutex_t *mp,
timestruc_t *reltime);
DESCRIPTION
These functions are used to wait for the occurrence of a condition represented by an LWP condition variable. LWP condition variables must
be initialized to 0 before use.
The _lwp_cond_wait() function atomically releases the LWP mutex pointed to by mp and causes the calling LWP to block on the LWP condition
variable pointed to by cvp. The blocked LWP may be awakened by _lwp_cond_signal(2), _lwp_cond_broadcast(2), or when interrupted by delivery
of a signal. Any change in value of a condition associated with the condition variable cannot be inferred by the return of _lwp_cond_wait()
and any such condition must be re-evaluated.
The _lwp_cond_timedwait() function is similar to _lwp_cond_wait(), except that the calling LWP will not block past the time of day speci-
fied by abstime. If the time of day becomes greater than abstime, _lwp_cond_timedwait() returns with the error code ETIME.
The _lwp_cond_reltimedwait() function is similar to _lwp_cond_wait(), except that the calling LWP will not block past the relative time
specified by reltime. If the time of day becomes greater than the starting time of day plus reltime, _lwp_cond_reltimedwait() returns with
the error code ETIME.
The _lwp_cond_wait(), _lwp_cond_timedwait(), and _lwp_cond_reltimedwait() functions always return with the mutex locked and owned by the
calling lightweight process.
RETURN VALUES
Upon successful completion, 0 is returned. A non-zero value indicates an error.
ERRORS
If any of the following conditions are detected, _lwp_cond_wait(), _lwp_cond_timedwait(), and _lwp_cond_reltimedwait() fail and return the
corresponding value:
EINVAL The cvp argument points to an invalid LWP condition variable or the mp argument points to an invalid LWP mutex.
EFAULT The mp, cvp, or abstime argument points to an illegal address.
If any of the following conditions occur, _lwp_cond_wait(), _lwp_cond_timedwait(), and _lwp_cond_reltimedwait() fail and return the corre-
sponding value:
EINTR The call was interrupted by a signal or fork(2).
If any of the following conditions occur, _lwp_cond_timedwait() and _lwp_cond_reltimedwait() fail and return the corresponding value:
ETIME The time specified inabstime or reltime has passed.
EXAMPLES
Example 1 Use the _lwp_cond_wait() function in a loop testing some condition.
The _lwp_cond_wait() function is normally used in a loop testing some condition, as follows:
lwp_mutex_t m;
lwp_cond_t cv;
int cond;
(void) _lwp_mutex_lock(&m);
while (cond == FALSE) {
(void) _lwp_cond_wait(&cv, &m);
}
(void) _lwp_mutex_unlock(&m);
Example 2 Use the _lwp_cond_timedwait() function in a loop testing some condition.
The _lwp_cond_timedwait() function is also normally used in a loop testing some condition. It uses an absolute timeout value as follows:
timestruc_t to;
lwp_mutex_t m;
lwp_cond_t cv;
int cond, err;
(void) _lwp_mutex_lock(&m);
to.tv_sec = time(NULL) + TIMEOUT;
to.tv_nsec = 0;
while (cond == FALSE) {
err = _lwp_cond_timedwait(&cv, &m, &to);
if (err == ETIME) {
/* timeout, do something */
break;
SENDwhom}
}
(void) _lwp_mutex_unlock(&m);
This example sets a bound on the total wait time even though the _lwp_cond_timedwait() may return several times due to the condition being
signalled or the wait being interrupted.
Example 3 Use the _lwp_cond_reltimedwait() function in a loop testing some condition.
The _lwp_cond_reltimedwait() function is also normally used in a loop testing some condition. It uses a relative timeout value as follows:
timestruc_t to;
lwp_mutex_t m;
lwp_cond_t cv;
int cond, err;
(void) _lwp_mutex_lock(&m);
while (cond == FALSE) {
to.tv_sec = TIMEOUT;
to.tv_nsec = 0;
err = _lwp_cond_reltimedwait(&cv, &m, &to);
if (err == ETIME) {
/* timeout, do something */
break;
}
}
(void) _lwp_mutex_unlock(&m);
SEE ALSO
_lwp_cond_broadcast(2), _lwp_cond_signal(2), _lwp_kill(2), _lwp_mutex_lock(2), fork(2), kill(2)
SunOS 5.11 13 Apr 2001 _lwp_cond_wait(2)