To publish to a PPS object, a publisher simply calls open() for the object file with O_WRONLY to publish only, or O_RDWR to publish and subscribe. The publisher can then call write() to modify the object's attributes. This operation is nonblocking.
For a simple example, see Publishers in the Examples appendix.
When you write an attribute to the file, do so in a single operation. A single write() to an object is required to guarantee that simultaneous writes from multiple publishers can be handled correctly. For example, instead of this:
write( fd, "state::", 7); if ( state == 0 ) write( fd, "off", 3); else write( fd, "on", 2);
do something like this:
snprintf( buf, sizeof(buf), "state::%s", state ? "on" : "off"); write( fd, buf, strlen(buf) );