Sponsored Content
Top Forums Programming Why does fflush(stdin) fail to work ? Post 303022565 by Azrael on Monday 3rd of September 2018 12:45:52 AM
Old 09-03-2018
When an invalid character is entered the code goes into an endless loop. It seems this line:
Code:
while (scanf("%lf", &number) != 1)

Is essentially the same as this:
Code:
while(1)

It may check the condition, but in this case that condition will never change. You could that same check in an if statement so it is only checked once. Or use the while(1) in that loop with breaks to jump out of the loop when needed. You might want to look into fgets. The scanf function is great for learning, but can introduce potential security problems. Hope that helps.
 

10 More Discussions You Might Find Interesting

1. Programming

stdin

hi, how does a program know whether some data are available from stdin? I would like to make a program which could read its data from stdin and _if_there_is_nothing_at_stdin_ from a file which name is given as an argument. If there is nothing in stdin and no filename is given as argument,... (2 Replies)
Discussion started by: marquis
2 Replies

2. Shell Programming and Scripting

redirection stdin

hello all, I need to create a password change utility for a database. I need to gather at the command line the username, password and database sid. I have the program currently doing this. What I would like to do is not have the new password appear on the screen when I do my read command.... (2 Replies)
Discussion started by: whited05
2 Replies

3. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

4. Shell Programming and Scripting

redirect STDIN

can you redirect STDIN with command arguments? I have tried this approach: # ./script -option <argument1> <argument2> 0<$2 # $2: ambiguous redirect Is this possible? (4 Replies)
Discussion started by: prkfriryce
4 Replies

5. Programming

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (1 Reply)
Discussion started by: vvaidyan
1 Replies

6. UNIX for Dummies Questions & Answers

How to write to stdin of another program (program A -> [stdin]program B)

Hi, Program A: uses pipe() I am able to read the stdout of PROGAM B (stdout got through system() command) into PROGRAM A using: * child -> dup2(fd, STDOUT_FILENO); -> execl("/path/PROGRAM B", "PROGRAM B", NULL); * parent -> char line; -> read(fd, line, 100); Question: ---------... (3 Replies)
Discussion started by: vvaidyan
3 Replies

7. UNIX for Dummies Questions & Answers

fork and stdin

When a process fork(), the child share the same file descriptors as his father. Thus, they share the same stdin. Quick and dirty exemple below (sorry for the ugly gets() call) : #include <stdio.h> #include <unistd.h> int main() { char buf; if (fork()) { /*parent */ ... (1 Reply)
Discussion started by: milouz
1 Replies

8. UNIX for Dummies Questions & Answers

redirection stdin

Bonjour, Mon application en C sous linux tourne en redirigeant stdin vers un fichier. Exemple; $appli1 <file1. PB: Je voudrais temporairement redonner la main au user sur le clavier. Alors je pensais ajouter system("appli2"); dans appli1. Dans son main() , appli2() fait seulement un... (1 Reply)
Discussion started by: cypleen
1 Replies

9. Shell Programming and Scripting

tr command fail to work in script

Hi, I has the following command in the script. This command works fine if I execute on command prompt. If I run the script, this is not working as expected (deleting CR). tr -d "\015" < ${FilePath}/${FileName} > ${FilePath}/${File_Prefix}.csv I could not figure out whats... (6 Replies)
Discussion started by: kavuri
6 Replies

10. IP Networking

Discussion at work, would a router work pluging a cable in wan1 and lan1?

hi all. and sorry for the random question, but this sparkled a raging flame-war at work and i want more points of view situation a router, with linux of some sort, dhcp client requesting for ip in wan1 (as usual with wan ports) dhcp server listening in lan1, and assigning ip (as usual... (9 Replies)
Discussion started by: broli
9 Replies
_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.10 13 Apr 2001 _lwp_cond_wait(2)
All times are GMT -4. The time now is 09:22 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy