如何从C程序向Linux中的控制台发送广播消息

时间:2014-01-29 10:24:25

标签: c linux init

我在C上编写了一个关于Linux的守护程序,现在我需要能够像commad“wall”那样向Linux控制台发送短消息,或者重启系统时init如何发送。

如何在我的程序中执行此操作?

最好的问候

马立克

4 个答案:

答案 0 :(得分:2)

当前的控制台linux设备是/dev/console,但您需要是root才能写入此文件。 有关详细信息,请参阅控制台的手册页,但这是一个摘录:

在控制台上启动进程的常用方法是:

  • (a)告诉init(8)(在inittab(5)中)启动mingetty(8)(或 agetty(8))在控制台上;
  • (b)请求openvt(1)开始进程 控制台;
  • (c)启动X - 它将找到第一个未使用的控制台,和 在那里显示它的输出。(还有古老的doshell(8)。)

答案 1 :(得分:0)

  

要向多个终端/控制台发送消息,请在各种tty节点上使用 ttymsg()

关于如何使用它的一个很好的例子是你的C程序,请查看source of the walk command。我们可以准确地看到它如何准备消息缓冲区并将其作为广播发送到所有当前登录用户的各个终端。

答案 2 :(得分:0)

对于发送ocasional短消息,最好(最便携,最简单)的方法就是运行wall(1)。

答案 3 :(得分:0)

我想避免从我的程序中执行其他二进制文件。 使用ttymsg解决方案和来自wall程序的代码对我很有帮助。

感谢您的帮助 马立克