发新话题
打印

谁来解决,谁就是高手!!!

――好久了,都没有人理我。
) T2 ]/ P7 D$ H6 o2 R我有一流程如下之程序,当连接在ttyS0的设备没有准备好时程序挂起。试图将close(fd)放到子进程中,程序不会 挂起,但当设备恢复正常后,哪些先前送出的数据仍旧送了过去,如何将其清除?
5 z) Q6 N- p0 O6 |5 J___________________________________________
; Z+ \3 q' M6 X; H# s注意:ttyS0必须用crtscts,即:$ I: ]* r2 a2 T$ A0 W
stty -opost crtscts < /dev/ttyS0
/ L2 @6 u7 A( f5 A+ k; l3 |& T____________________________________________
( _, k3 \6 I9 y6 ]& X5 @& w+ a& H
3 I! ?# `- C* `! \7 Pfd=open("/dev/ttyS0",O_RDWR);2 E/ K( Y3 A* L* X# A2 n* ^, [
pid=fork();
9 o7 ]1 g( Q' i+ Nif (pid==0)
: P% F; r' @. r% l3 Q{: ^- v% D# |& I! C
write(fd,buf,20);
2 [) Q$ H4 w7 N% u0 x/ X! dexit(0);
4 m6 G. w' O- A+ N6 H6 B* D6 U: g}( B& N9 M  b' _  c9 @6 ^8 a3 H& d
else
* Q& g: c2 h: ~" b  T! A+ s+ W2 [{
% O; [/ V& V2 B% K& J( ^sleep(10);
  H. ?. z( @* w- Gkill(pid,9);0 d% L/ V& V  \) d5 \- w$ y
close(fd);
2 G4 Z* p" n& [5 z9 q- Wexit(0);* ]" Q- D* ^/ G4 w7 ~3 |- W
}
  x; u) K* A7 X5 _5 X9 r  j/ a6 B9 j/ D" n
      

TOP

发新话题