是否有正确的方法来编写一个持续运行的程序

时间:2016-08-30 05:12:19

标签: c linux shell cron

我想在我的电脑上继续执行C程序。它实际上并没有"做"任何东西,直到它识别出event

例如,C程序可以使用永不退出的do while循环编写。在循环内部,可能存在监听if else的{​​{1}}条件。让我们说" event一个文件存在于目录中,然后打开文件并执行某些操作,if休息一下并else一分钟"。

当然,此功能可以在C程序之外实现。我可以在shell脚本中运行相同的想法......" sleep(60)目录中存在一个文件,然后运行C程序,if休息一下else一分钟"。如果文件存在,我也可以编写一个shell脚本来执行C程序,并运行带有sleep(60)或其他调度程序的shell程序。

如果我没有运行crontab或将sleep设置为非常高的频率,那么显然我的响应时间会有所改善。虽然这是理想的,但我怀疑这是一种安全和正确的方法。我基本上希望我的程序始终为行动做好准备... crontab发生,开始工作!

由于我从未实施过这样的程序,我的问题是,是否有一种正确而安全的方式来创建一个"事件监听器"是否提供此类功能? C vs shell方法?其他想法?

1 个答案:

答案 0 :(得分:1)

您实际需要的是在流程之间进行通信。 使用'sleep()'并检查条件可以完成,但就CPU消耗而言,这不是最佳方式。

有几种方法可以在进程之间进行通信,我知道这些:

  1. 共享内存
  2. 插座
  3. 先进先出
  4. 启动管道很好: 当你有2个程序并希望程序#1等待来自程序#2的某个事件时,可以使用它。 我找到了一个例子here,但谷歌还有很多其他的例子。

    之后我会继续使用socket。一个例子是here,但同样,网络上还有更多。

    进一步阅读我可以建议您在“进程间通信”一章中查找“高级Linux编程”一书。