【问题标题】:c++ wait for system callc++等待系统调用
【发布时间】:2013-01-10 17:47:37
【问题描述】:

我正在使用 C++ 处理文件。 我在系统提示符下调用一个程序来创建一个 txt 文件。然后我使用 C++ 读取该文件。 在读取文件之前,我需要确保 C++ 等待程序完成。

C++解释:

createOutputFile(); 
system("Start wp/PRO386W.EXE /V1 consult('wp/read.pl').");
// I need to wait for this "PRO386W.EXE to finish
readLista();//before calling this method

【问题讨论】:

  • 使用CreateProcess而不是system(),你可以等待返回的句柄。

标签: c++ system call


【解决方案1】:

system() 等待命令完成。在您的情况下,“命令”是“开始”,这迫使它进入后台。删除“开始”,你应该没问题。如果您确实需要它是异步的,则需要以不同的方式启动该过程。

【讨论】:

  • 我试过 system("wp/PRO386W.EXE /V1 Consult('wp/read.pl').");它也没有工作。
  • 它不起作用,因为您无法在 Windows 上启动类似的程序。使用 CreateProcess 并等待 CreateProcess 返回的句柄。
  • 它现在可以工作了,我使用了类似的东西:system("\"wp/PRO386W.EXE\" /V1 Consult('wp/read.pl').");
【解决方案2】:

如果程序WP/PRO386W.exe是一个控制台程序,只需删除Start,这会使程序在后台运行。 UPD:也许你必须使用反斜杠:"WP\\PRO386W.exe ..."

【讨论】:

    【解决方案3】:

    您可以随时检查文件结尾。假设 fin 是 ifstream 类型,那么你可以检查 f (!fin.eof( ))

    【讨论】:

    • 什么...我认为您不明白 istream::eof 检查的内容或含义。
    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多