Системный вызов open (), read () и close () в C - PullRequest
0 голосов
/ 18 октября 2019
int main(int argc, char* argv[])
{
    int fd, index = 1;

    if (argc > 1) {

       if (close(STDIN_FILENO) == -1) {
           perror("Error printed by perror");
       }
    fd = open(argv[index], O_RDONLY);
    }

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

, но если изменить его на следующее:

int main(int argc, char* argv[])
{
    int fd, index = 1;

    fd = open(argv[index], O_RDONLY);
}

Он перестает работать, и когда я пытаюсьдля чтения файла ничего не происходит, и программы остаются в ожидании. В тестовой книге, которую я использую, они не должны были закрывать STDIN_FILENO. Есть идеи о том, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...