Advertisement
ApelPro

rust msgq

Dec 9th, 2023 (edited)
954
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.01 KB | None | 0 0
  1. use nix::unistd::ForkResult::{Child,Parent};
  2. use nix::unistd::{fork};
  3. use posixmq::PosixMq;
  4.  
  5. fn main() {
  6.  
  7.  const N:i32 = 2;
  8.  let mut i = 0;
  9.  
  10.  let mq = PosixMq::create( "/dfdf" ).expect( "Error, cannot create message queue!" );
  11.  
  12.  let mut msg = vec![0u8;8192];
  13.  
  14.  while i < N {
  15.   match fork().expect( "Error, while creating subprocess!" ) {
  16.    Child => {
  17.     break;
  18.    },
  19.    Parent {child: _} => {
  20.     i+=1;
  21.    },
  22.   }
  23.  }
  24.  
  25.  match i {
  26.   0 => {
  27.    println!( "I am the first one..." );
  28.    mq.recv( &mut msg ).expect( "Error while receiving message!" );
  29.    
  30.    println!( "{}", String::from_utf8(msg).unwrap() );
  31.   },
  32.   1 => {
  33.    println!( "I am the second one..." );
  34.    mq.recv( &mut msg ).expect( "Error while receiving message!" );
  35.  
  36.    println!( "{}", String::from_utf8(msg).unwrap() );
  37.   },
  38.   2 => {
  39.    println!( "I am the parent of that two :(" );
  40.    mq.send( 1, b"Helloka" ).expect( "Error sending message" );
  41.    mq.send( 2, b"Hohaho" ).expect( "Error while sending message" );
  42.   },
  43.   _ => {}
  44.  }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement