cmsg - Linux


The cmsg command in Linux is a powerful tool used to create, manage, and send custom messages through the Linux kernel’s Netlink subsystem. It provides a reliable and efficient way to communicate between user-space applications and the kernel.


cmsg [options] <operation> <message-type> [arguments...]

Available operations:

  • send – Send a custom message to the kernel
  • recv – Receive and process a custom message from the kernel
  • list – List all registered message types and their info


| Option | Description | Default Value |
| -s | Sleep mode: block until a message is received | none |
| -d | Print debug messages | none |
| -t | Timeout (seconds) for recv operation | 1 |
| -p | Port number for Netlink socket | none |


Sending a Custom Message

cmsg send 10 "Hello from user-space!"

Receiving Custom Messages

cmsg recv 10

Listing Registered Message Types

cmsg list

Common Issues

  • Message type not registered: Make sure the message type you are trying to use has been registered in the kernel.
  • Permission denied: The cmsg command requires root privileges to operate.
  • Socket error: The Netlink socket might not be available or properly configured.


  • Kernel modules: cmsg can be used to communicate with custom kernel modules.
  • Scripting: cmsg can be integrated into scripts to automate tasks and monitor system events.
  • Monitoring tools: cmsg can be used to create custom monitoring tools that receive system-level notifications.

Related Commands

  • netlink: The low-level interface for interacting with the Netlink subsystem.
  • msgfmt: Tool for converting message templates into binary format.

Additional Resources: