假设某人在终端中执行以下操作:
echo 'start working' > /etc/.example
当执行此命令时,示例程序将“开始工作”。
在UNIX(类)系统上,将如何实现类似的功能,这种行为被称为什么?
最佳答案
有两种一般的方法可以做到这一点。
一种是写入的文件实际上是程序正在读取的named pipe,它会像接收任何其他类型的输入流(例如网络套接字或标准输入)一样接收“开始工作”字符串。
另一个(特定于Linux)是写入的文件是常规文件,并且程序正在使用inotify(或在较旧的系统上进行通知)监视文件的更改。当收到指示文件已更改的inotify事件时,它将读取其内容并获取“开始工作”字符串。
请注意,这两种方法都要求所涉及的程序已经在后台运行(并且什么也不做)。实际上,没有办法以这种方式启动程序,除非有一个后台进程负责启动程序,而该进程正在执行上述两件事之一。