2

假设有人在终端中执行以下操作:

echo 'start working' > /etc/.example

当它被执行时,示例程序将“开始工作”。

在 UNIX(类)系统上,如何实现类似的东西,这种行为叫什么?

4

1 回答 1

6

有两种通用方法可以做到这一点。

一个是正​​在写入的文件实际上是程序正在读取的命名管道,它接收“开始工作”字符串,就像它从任何其他类型的输入流(例如网络套接字或标准输入)一样.

另一个(特定于 Linux)是正在写入的文件是常规文件,并且程序正在使用inotify(或在旧系统上的 dnotify)监视文件的更改。当它收到一个指示文件已更改的 inotify 事件时,它将读取其内容并获取“开始工作”字符串。

请注意,这两种方法都要求相关程序已经在后台运行(只是什么都不做)。确实没有办法以这种方式启动程序,除非有一个后台进程负责启动正在执行上述两件事之一的程序。

于 2010-04-09T01:38:05.577 回答