【问题标题】:Suppress system() console output抑制 system() 控制台输出
【发布时间】:2013-07-10 20:38:24
【问题描述】:

我正在使用system() 打开和关闭与我的代码通信的外部程序。但是,每次我使用system() 函数时,我都会得到控制台输出,如果我从普通终端/shell 调用程序,例如每次我致电system(killall [program] &) 时,我都会收到一条已终止 消息。有没有办法抑制这种类型的输出?

【问题讨论】:

  • 一如既往地将他们的输出重定向到/dev/null
  • @Jon 我已经尝试过了,但我仍然在控制台上收到“终止”消息。

标签: c++ unix console


【解决方案1】:

【讨论】:

  • 问题是,execlp 我在等待命令完成时卡住了;我正在寻找的是可以让我启动第二个进程的东西,它与主程序并行运行,就像我使用system("[program] &")
  • @joaocandre 你应该使用std::thread。查看接受的答案here,将您的execlp 放入task1。这应该可以解决问题。
  • 显然,使用task1.join() 意味着等待task1 完成,所以这不是我想要的。
  • @joaocandre 只是不要调用join(),task1 应该在不阻塞主线程的情况下同时执行。
  • 不使用join() 会导致task1 根本没有启动。我也尝试过使用detach 相同的结果。
猜你喜欢
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多