system()函数找不到可执行文件的可能原因是什么?

时间:2010-02-16 17:22:20

标签: c++ c windows winapi

  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 ));

  }

System()正在使用log.txt调用Tail.exe  所有这些目录都与调用它的可执行文件位于同一目录中 得到错误ENOENT- No such file or directory
此外,指定所有内容的路径,相同的错误。

感谢您的任何建议,谢谢。

2 个答案:

答案 0 :(得分:5)

来自您关联的system()上的文档:

  

ENOENT    找不到命令解释器。

所以问题不在于它找不到tail.exe,问题在于它无法找到命令解释器。这表明更大的事情是错误的。我们需要更多信息来诊断真正的问题。同样来自同一页:

  

系统函数将命令传递给   命令解释器,哪个   将字符串作为一个执行   操作系统命令。系统   指的是COMSPEC和PATH   定位的环境变量   命令解释器文件(文件   在Windows NT和Windows中命名为CMD.EXE   后来)。如果命令为NULL,则   功能只是检查是否   命令解释器存在。

这表明有两种调查途径:system(NULL)返回什么?当程序运行时,COMSPECPATH环境变量的值是什么?

答案 1 :(得分:1)

您可以尝试使用system(“cmd tail -500 log.txt”) - 这在某些Windows框中是必需的。