ftell()总是出错

发布于 2022-07-18 21:23:12 字数 2599 浏览 13 评论 6

昨天写了一个很小的测试程序,试试pipe()的使用,程序大致如下:
void main (void)
{
        char test=4,buffer;
        char string[20];
        pid_t uid;
        FILE *fstream;
        int fd,fdin[2];
       
        if(pipe(fdin) == -1)
                perror("create pipe failed!");
        fd = fdin[0];
        if((fstream = fdopen(fd,"r")) == NULL)
        perror("fdopen error!");
        if((uid=fork()) == 0) //child
                {
                close(fdin[0]);
                if(fdin[1] != STDOUT_FILENO)
                        {
                        if(dup2(fdin[1],STDOUT_FILENO) != STDOUT_FILENO)
                        perror("dup2 failed!");
                        exit(255);
                        close(fdin[1]);

                        }
                        execlp("/11/hello",NULL);
                }
        else if(uid < 0)
                perror("fork error");

        else     //parent
                {
                close(fdin[1]);
                if(fseek(fstream,0,SEEK_SET) != 0)
                perror("seek error");
                fread(string, 1, 6, fstream);
                }
fseek总是出错,不知什么原因,高手指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

慢慢从新开始 2022-07-24 00:30:52

原帖由 luanjian 于 2006-5-23 18:14 发表
一般来说,具备什么条件的流不可以呢,那在我这里用什么方法获取流数据呢?fgets()?

你就顺序读取呀。

允世 2022-07-24 00:06:57

一般来说,具备什么条件的流不可以呢,那在我这里用什么方法获取流数据呢?fgets()?

魂牵梦绕锁你心扉 2022-07-23 23:17:34

原帖由 luanjian 于 2006-5-23 14:14 发表
Illegal seek!
我在这里不是用fdopen将一个管道的文件描述符与一个流结合了吗,对一个流是可以调用fseek的呀

流也要看是什么流,
并不是所有的流都可以的。

冷清清 2022-07-23 13:10:18

流可以fseek,不代表pipe可以定位!

眼泪都笑了 2022-07-22 17:47:38

Illegal seek!
我在这里不是用fdopen将一个管道的文件描述符与一个流结合了吗,对一个流是可以调用fseek的呀

┊风居住的梦幻卍 2022-07-22 01:11:37

报什么错误?
好像fseek不能对pipe操作吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文