当前位置: 技术问答>linux和unix
怎么会有时错误,有时正确?
来源: 互联网 发布时间:2015-10-08
本文导语: Red Hat Linux 9 test.c #include /*简化了的代码*/ int main(){ char str[256]; FILE *fp; /*显示环境变量TTY,若无则用tty命令取得*/ if((fp=popen("echo $TTY;tty","r"))!=NULL){ while(fgets(str,256,fp)){ printf("%s",str); ...
Red Hat Linux 9
test.c
#include
/*简化了的代码*/
int main(){
char str[256];
FILE *fp;
/*显示环境变量TTY,若无则用tty命令取得*/
if((fp=popen("echo $TTY;tty","r"))!=NULL){
while(fgets(str,256,fp)){
printf("%s",str);
break; /*前面会经过其他处理,当条件达到就退出。*/
};
pclose(fp);
};
return(0);
}
运行时有时提示“tty: 写入时发生错误: 断开的管道”,有时又没有这样的错误提示
请问是什么原因造成这样不稳定呢?要怎么解决?
test.c
#include
/*简化了的代码*/
int main(){
char str[256];
FILE *fp;
/*显示环境变量TTY,若无则用tty命令取得*/
if((fp=popen("echo $TTY;tty","r"))!=NULL){
while(fgets(str,256,fp)){
printf("%s",str);
break; /*前面会经过其他处理,当条件达到就退出。*/
};
pclose(fp);
};
return(0);
}
运行时有时提示“tty: 写入时发生错误: 断开的管道”,有时又没有这样的错误提示
请问是什么原因造成这样不稳定呢?要怎么解决?
|
只要tty可以就直接用tty吧,不要echo $TTY;tty了,好象只用一个是可以的
|
把break注释掉看看可不可以
|
好象是因为管道内还有内容就断开造成的
|
是不是这个原因,break的时候tty还没有写pipe,pclose以后tty再些pipe就有问题了,不注释break,在前面加一个sleep好象也可以
|
好帖子!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。