導航:首頁 > 操作系統 > linuxread超時

linuxread超時

發布時間:2022-05-21 00:10:31

linux bash 怎麼在read輸入字元後,按不按ENTER鍵,在一定時間後都能自動執行

read 加 -t 選項,設置超時時間(以秒為單位)。比如:

read-p"Select(y/n):"-t5n

5秒超時後會繼續往下自動執行。


注意:

只有按ENTER鍵,才會將用戶輸入賦值給變數n。

若超時,無論用戶是否輸入字元,n的值都為空。

② mini2440+linux串口 read()問題

你的問題描述的不太清楚,如果沒有數據的話,根據你的設置,程序會一直堵塞到有串口數據可讀,buf[res]=0 這條語句其實也很危險,加入res = 255,那就越界了。

③ scoket 在linux下C語言怎麼設置read超時

給你一段我寫的client代碼

C/C++ code
/*客戶端*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/socket.h> #include<sys/types.h> #include<netdb.h> #include<netinet/in.h> #include<unistd.h> #include<sys/time.h> #include <errno.h> #define SERVERPORT 5556 int main(int argc,char *argv[]) { int sockfd,connectfd=0,recvfd,sendfd ; struct sockaddr_in serv_addr; struct hostent *host; FILE *fp; char ch[1024]; int byte_send=0; //int a=MSG_DONTWAIT; //int opt=MSG_DONTWAIT; fd_set rfds; struct timeval tv; int retval, maxfd; if(argc!=3) { printf("format: %s IP file_name\n",argv[0]); return 0; } if((host=(gethostbyname(argv[1])))==NULL) { printf("error in gethostby name. \n"); return 0; } if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { printf("error in socket create.\n"); return 0; } printf("創建socket成功,sockfd=%d\n",sockfd); //printf("運行至此1\n"); serv_addr.sin_family=AF_INET; serv_addr.sin_port =htons(SERVERPORT); serv_addr.sin_addr=*((struct in_addr*)host->h_addr); bzero(&(serv_addr.sin_zero),sizeof(serv_addr.sin_zero)); //printf("運行至此2\n"); while(1) { if((connectfd=connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr )))==-1) { printf("error in connect.\n"); printf("連接失敗:connectfd=%d\n",connectfd); sleep(5); continue; } printf("連接成功:connectfd=%d\n",connectfd); break; } //printf("運行至此3\n"); fp=fopen(*(argv+2),"rb"); memset(ch,0,sizeof(ch)); while(1) { memset(ch,0,sizeof(ch)); sendfd=fread(ch,sizeof(char),1024,fp); if(sendfd<0) break; sleep(1); //printf("sendfd=%d\n",sendfd); byte_send=send(sockfd,ch,sendfd,0); //printf("byte_send=%d,%s\n",byte_send,strerror(errno)); //memset(&ch,0,sizeof(ch)); //printf("發送內容:%s\n",ch); sleep(3); while(1) { //void FD_ZERO (fd_set *fdset); // 初始化文件描述集合 //void FD_SET (int fd, fd_set *fdset); // 將描述符加入到集合中 //void FD_CLR (int fd, fd_set *fdset); // 將描述符中集合中刪除 //int FD_ISSET (int fd, fd_set *fdset); // 檢查描述符集合中指定的文件描述符是否可讀寫 /*把可讀文件描述符的集合清空*/ FD_ZERO(&rfds); /*把標准輸入的文件描述符加入到集合中*/ FD_SET(0, &rfds); maxfd = 0; /*把當前連接的文件描述符加入到集合中*/ FD_SET(sockfd, &rfds); /*找出文件描述符集合中最大的文件描述符*/ if(maxfd < sockfd) maxfd = sockfd; /*設置超時時間*/ tv.tv_sec = 5; tv.tv_usec = 0; /*等待聊天*/ retval = select(maxfd+1, &rfds, NULL, NULL, &tv); if(retval == -1) { printf("select出錯,客戶端程序退出\n"); break; } else if(retval == 0) { //printf("客戶端沒有任何輸入信息,並且伺服器也沒有信息到來,waiting...\n"); //continue; printf("客戶端輸出信息完畢,等待下一次輸出\n"); break; } else { /*伺服器發來了消息*/ if(FD_ISSET(sockfd,&rfds))// 檢查描述符集合中指定的文件描述符是否可讀寫 { /******接收消息*******/ memset(ch,0,sizeof(ch)); recvfd=recv(sockfd,ch,sizeof(ch),0); if(recvfd==-1) { //printf("運行至此7\n"); printf("error in recv.\n"); continue; } //printf("recvfd=%d\n",recvfd); printf("%s\n",ch); } } } } printf("傳送結束!\n"); fclose(fp); close(connectfd); return 0; }

④ linux 下編寫的一個帶超時限制的read()

輸入輸出都有緩沖區概念,在輸入hello world不回車,其實已經放到了read緩沖區中,在超時關閉read()的時候,系統會flush緩沖區,其實就是把它放到內存中,所以這時候n已經有值了,write當然會輸出hello world了。

⑤ linux下調用read函數出現的問題!

if((((((((from_fd=open(argv[1],O_RDONLY|O_NONBLOCK))))))))==-1)

你的那個if永遠都是成功open,最重要的是把from_id的值刷成xxxx了。

注意使用 if時候 ==的級別。

提醒下程序結尾沒有return值。

⑥ shell read讀取到錯誤的輸入

Linux有緩沖區的概念,read是從輸入緩沖區去讀的,如果緩沖區里已經有數據了,那麼就直接拿過來了。在readss之前先用另一條read語句將緩沖區數據讀走,緩沖區即清空了,這時再輸入就可以被readss讀到了。

這固然是一個辦法,但同時也帶來一個問題:如果在20s等待時間內沒有任何輸入,那麼腳本就會要求你輸入兩次。

所以,完善的解決方案應該如下:

sleep20
read-t1discard
read-p"Pleaseinput:"ss
echo$ss

使用read的超時機制,超時時間設為1s,這已經是最短的超時時間設置了。

這樣即使在等待時間內沒有任何輸入,第一條read命令在1s超時後也會自動退出。

參考:http://superuser.com/questions/276531/clear-stdin-before-reading

⑦ 求教,linux read函數 出錯

type read 看看你的read是不是bash的內置命令,我懷疑你有重名的命令或者alias

⑧ 如何解決linux文件系統read

解決方法
:使用fsck手動修復,具體操作如下:
使用root進入單用戶模式,運行
fsck.ext3
-y
/dev/vda3
說明:ext3的文件系統使用fsck.ext3,ext4文件系統使用fsck.etx4。/dev/vda3是系統/根分區。運行完畢後,reboot重啟系統就恢復正常。

閱讀全文

與linuxread超時相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350