2014-12-25 6 views
-2
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

char buf[32]; 

int main(int argc, char* argv[], char* envp[]){ 
    if(argc<2){ 
      printf("pass argv[1] a number\n"); 
      return 0; 
    } 

    int fd = atoi(argv[1]) - 0x1234; 
    printf("%d\n", fd); 
    int len = 0; 
    len = read(fd, buf, 32); 
    printf("%s", buf); 
    return 0; 
} 

Этот мой код, но я не могу отменить бафф. Потому что читать функция не завершается. Пожалуйста, помогите, что не так? Я запускаю программу с терминала следующим образом:
./fd 4660Функция чтения в C не заканчивается

+1

Я не вижу, где вы открыть дескриптор файла? – ouah

+1

Сначала я начал сначала открывать файл. Дескриптор файла является целым числом, да. Но вы не можете просто передать любое целое число для чтения, это должен быть открытый файл, а 'atoi' не открывает файлы. – datenwolf

+1

'./fd 4660' Может быть, вы читаете stdin (и блокируете)? – wildplasser

ответ

1

Где находится ваш файл? Перед чтением или записью в файл убедитесь, что файл открыт с соответствующими разрешениями

И, пожалуйста, проверьте также возвращаемое значение чтения.

Проверьте ссылку ниже: http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_075.htm

ИМО

printf("%s\n", buf); 
Смежные вопросы