Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use nix::unistd::ForkResult::{Child,Parent};
- use nix::unistd::{fork};
- use posixmq::PosixMq;
- fn main() {
- const N:i32 = 2;
- let mut i = 0;
- let mq = PosixMq::create( "/dfdf" ).expect( "Error, cannot create message queue!" );
- let mut msg = vec![0u8;8192];
- while i < N {
- match fork().expect( "Error, while creating subprocess!" ) {
- Child => {
- break;
- },
- Parent {child: _} => {
- i+=1;
- },
- }
- }
- match i {
- 0 => {
- println!( "I am the first one..." );
- mq.recv( &mut msg ).expect( "Error while receiving message!" );
- println!( "{}", String::from_utf8(msg).unwrap() );
- },
- 1 => {
- println!( "I am the second one..." );
- mq.recv( &mut msg ).expect( "Error while receiving message!" );
- println!( "{}", String::from_utf8(msg).unwrap() );
- },
- 2 => {
- println!( "I am the parent of that two :(" );
- mq.send( 1, b"Helloka" ).expect( "Error sending message" );
- mq.send( 2, b"Hohaho" ).expect( "Error while sending message" );
- },
- _ => {}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement