管道至unistd.h read segfau

2024-10-05 11:44:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过管道进入read,但在第二次输入之后它一直在分段。我做错什么了?提前谢谢。在

 $ ./read < <(python -c 'print "BBA\nBBADD\n",')
 Please enter your first name: 
 buf=
 BBA
 BBA
 Please enter your last name: 
 buf=
 Segmentation fault (core dumped)

我附上了read的代码作为参考,重要的部分是read()

^{pr2}$

`


Tags: namereadyour管道firstlastprintenter
1条回答
网友
1楼 · 发布于 2024-10-05 11:44:28

read对字符串一无所知,所以它只是愉快地读取sizeof(buf)个字符,而不使用NUL终止buf。调用puts(buf)会导致未定义的行为。在

对于简单的字符串I/O,不应该使用这样的低级函数;而应该使用getline。如果您确实想使用read,那么读取较小的块,检查每个调用的返回值并使用它;它告诉您读取了多少。在

相关问题 更多 >

    热门问题