* nix:“echo'start working'> /etc/.example”:这是如何实现的?

时间:2010-04-09 01:27:27

标签: c unix file ipc fifo

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

echo 'start working' > /etc/.example

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

在UNIX(类似)系统上,如何实现这样的行为,这种行为被称为什么?

1 个答案:

答案 0 :(得分:6)

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

一个是写入的文件实际上是程序正在读取的named pipe,并且它从任何其他类型的输入流(例如网络)接收“开始工作”字符串套接字或标准输入。)

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

请注意,这两种方法都要求有问题的程序已经在后台运行(并且没有做任何事情)。实际上没有办法以这种方式启动程序,除非有一个后台进程负责启动正在执行上述两项操作之一的程序。