【问题标题】:Cygwin- Trying to run DOS command in C languageCygwin-尝试用 C 语言运行 DOS 命令
【发布时间】:2013-02-01 06:53:11
【问题描述】:

system()popen() 我都试过了。当我在 cygwin 终端上运行该程序时,它工作得非常好,但是当我尝试通过双击 .exe 文件在 Windows 平台上运行它时,我收到此错误: exception::handle: Exception: STATUS_ACCESS_VIOLATION 我在popen() 上收到此错误,但在system() 上没有收到任何错误。

我正在运行适用于 unix 和 windows 操作系统的简单命令,例如:

system("echo foo>foo.txt");

我在这里做错了什么?

【问题讨论】:

  • 你的path环境变量一样吗?
  • 没有环境变量。
  • 环境变量总是存在的
  • 我的意思是我没有指定任何内容。如何更改或查看?

标签: c cygwin system popen


【解决方案1】:

我认为这是因为system()popen() 都将它们的参数传递给了路径中没有的/bin/sh,您可以尝试先将其添加到路径中。根据this,您的路径中需要以下内容:

cyggcc_s-1.dll
cygiconv-2.dll 
cygintl-8.dll 
cygncursesw-10.dll 
cygreadline7.dll 
cygwin1.dll
ls.exe 
sh.exe

【讨论】:

  • 他使用的是 Cygwin,所以/binsystem32 中都有echo。显然,两者都没有设置。或者有不同的错误。
  • @Aniket 是的,但路径中没有 sh.exe,请参阅 man system
  • 没错。手册页说了很多。人们应该在提问之前阅读它们。 +1
  • 如何将其添加到路径中?
  • 我将这些文件与我的 .exe 程序放在同一目录中,但仍然出现相同的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多