2013-10-04 7 views
1

Я пытаюсь динамически выделять память для вывода popen, но попытка найти длину файла дает ошибку «незаконный поиск». КодКак fseek() на трубе

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
void main() 
{ 
    char cmd[40] = {0}; 
    char * c; 
    int byteCount = 0; 
    FILE * pFp = NULL; 
    strncpy(cmd, "ls -l", sizeof(cmd)); 
    pFp = popen(cmd, "r"); 
    if (pFp == NULL) 
     printf ("file is null"); 
    fseek(pFp, 0, SEEK_END); 
    byteCount = ftell(pFp); 
    perror("seek "); 
    fclose(pFp); 
} 

fgets отлично работает, есть ли какие-либо ограничения при использовании fseek с popen? Спасибо заранее.

+1

Отклоните свой код правильно. – haccks

+0

'popen (cmd," r ");', что это? – haccks

+3

@haccks Это вызов функции. –

ответ

12

Да, вы не можете искать назад от трубы, только вперед. Труба в компьютере подобна трубе в реальной жизни, данные поступают только в одном направлении, и вы не можете изменить поток.

+0

Спасибо за ввод, я рассматривал вывод как файл, а не трубу. – user2212551

Смежные вопросы