Каковы возможные причины, по которым функция system () не может найти исполняемый файл? - PullRequest
1 голос
/ 16 февраля 2010
  if( system("tail -500 log.txt") == -1)
  {
      //Error calling tail.exe on log 
      //errno is a system macro that expands int returning
      //the last error. strerror() converts the error to it's
      //corresponding error message. 
      printf("Error calling tail.exe with system(): %s",strerror( errno ));

  }

Система () вызывает Tail.exe с log.txt
Все находятся в том же каталоге, что и исполняющий файл, вызывающий его.
Получение ошибки ENOENT - нет такого файла или каталога
Также указаны пути ко всему, такая же ошибка.

Любой совет приветствуется, спасибо.

Ответы [ 2 ]

5 голосов
/ 16 февраля 2010

Из документов на system(), которые вы связали:

ENOENT Интерпретатор команд не найден.

Так что проблема не в том, что он не может найти tail.exe, проблема в том, что он не может найти интерпретатор команд. Это говорит о том, что что-то большее идет не так. Нам понадобится больше информации для диагностики реальной проблемы. Также с той же страницы:

Системная функция передает команду командный интерпретатор, который выполняет строку как команда операционной системы. система относится к COMSPEC и PATH переменные среды, которые определяют местонахождение файл интерпретатора команд (файл с именем CMD.EXE в Windows NT и потом). Если команда NULL, Функция просто проверяет, интерпретатор команд существует.

Это предполагает несколько путей исследования: что возвращает system(NULL)? И каковы значения переменных среды COMSPEC и PATH при запуске вашей программы?

1 голос
/ 16 февраля 2010

Вы можете попробовать систему ("cmd tail -500 log.txt") - это было необходимо в некоторых окнах.

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