Linux编程问题—broken pipe 问题解决方法

时间:2022-12-24 16:28:27

1、问题出现现象

date>>”/mnt/hsdm/datamgr.txt” 

while(1){

 system(“pvmove /dev/sda p->dev”);

 sp = sp->next;

}

 error:segment fault

        system error:broken pipe

 

2、问题出现原因

1)broken pipe的字面意思是“管道破裂”。broken pip的原因是该管道的读端被关闭。

2)broken pipe经常发生socket关闭之后(或者其他的描述符关闭之后)的write操作中。

3)发生broken pipe错误时,进程收到SIGPIPE信号,默认动作是进程终止。

4)broken pipe最直接的意思是:写入端出现的时候,另一端却休息或退出了,因此造成没有及时取走管道中的数据,从而系统异常退出;

 

3、问题解决方法

    上面的程序之所以会出现broken pipe,是因为段错误先发生,导致程序异常退出,间接导致broken pipe;

    解决方法:将段错误的原因修改就行了,即将sp = sp->next改成p = p->next;