Sure. The reason you wound up with a total of four processes is because each call to fork() returns twice: once in the original process and once in the new one. So after you make the first call to fork(), there are two processes - both of which go on to call the second fork().
To create a total of three processes, make sure you only fork twice. You can do this by checking the return value of fork() to make sure you're in the process which should fork.
Now, if your communication channels only need to be such that A can send messages to B, and B can send messages to C, you wind up with something like this:
'Course there's various error checking and stuff you'd want to do in there that's not shown above - but that's the basic idea.
oh ok thanks alot, I think i understand now . I have a project coming up where ill need to use some pipes and I this really fills in some of my blanks.
I have written a script that appears to work correctly in testing, but is coming up with a starnge error message,
script_name: test: 0403-004 Specify a parameter with this command.
Redirection or piping of stdin or stdout is allowed only with -b. (156).
The script is run by different... (2 Replies)
i want to create 3 child processes from the same parent using folk. I know how to use folk but my child processes did not come from the same parent. Any suggestion what i did wrong ? (12 Replies)
can anyone tell me how to Create ten processes and display useful information about them including PID, starting-time in unix using c or c++ language. i tried to create 10 different processes using fork and exec but i couldn't display those process info:PID,STIME.
my sample code
......... (2 Replies)
Hi,
Am supposed to use message queues to send and receive messages between the processes. when i was working on that i realised that the message qid and the message queue related data should be maintained in a shared memory so that it can be accessed by all the processes. Could anybody refer... (10 Replies)
hello,
I had to implement a message queue application....between 30 processes......
all 30 proceses are getting data from serial port....
And here is THE FLOW::::::::1 connector process...which is linked with message queue to all the 30 applications. Processes get the data from serial port and... (9 Replies)
When I run the following script I get the following error message whcih I would like to suppress when the kill is issued:
./kill.sh: line 13: 31854 Killed nc -l -p 12345
Script:
#!/bin/bash
echo running nc in the background
nc -l -p 12345 &
PID=$!
echo nc pid: $PID
... (1 Reply)
Hi guys.
i have wrote a simple program to test message queue attributes. here it is:
#include <stdio.h>
#include <stdlib.h>
#include <mqueue.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
int main()
{
struct mq_attr attr;
mqd_t mqd;
... (2 Replies)
Hi all,
First of all thanks in advance for reading my post and for your heart for helping me.
I am trying to create a message queue using mq_open(name,oflags,mode_t,attr) method. But that function call is returning with an error code EFAULT. By googling it I found that it happens when there is... (10 Replies)
I have a script, it will create 3 files
---------
file1=dataout/file1.txt
file2=dataout/file2.txt
file3=dataout/file3.txt
echo "0" > $file3
---------
For file1 and file2 we are not initializing any values.
But for file3 we are initializing the value of 0.
When we execute the... (3 Replies)
Hello Team,
In a application filesystem, there is a process keep creating the log files. Due to that the filesystem keep getting full. Please let me know how to identify the process which is keep writing in the filesystem.
fuser -u <FS> will show only the user who using the filesystem.... (3 Replies)
Discussion started by: gowthamakanthan
3 Replies
LEARN ABOUT DEBIAN
pvm_advise
ADVISE(3PVM) PVM Version 3.4 ADVISE(3PVM)NAME
pvm_advise() - Controls use of direct task-to-task routing.
[In Version 3.2: Replaced by pvm_setopt]
SYNOPSIS
C int info = pvm_advise( int route )
Fortran call pvmfadvise( route, info )
PARAMETERS
route Integer advising PVM to set up direct task-to-task links.
route options
PvmDontRoute 1 Don't allow direct links to this task
PvmAllowDirect 2 Allow but don't request direct links
PvmRouteDirect 3 Request direct links
info Integer returning error status.
DESCRIPTION
The routine pvm_advise advises PVM on whether or not to set up direct task-to-task links (using TCP) for all subsequent communication. Once
a link is established it remains until the application finishes. If a direct link can not be established because one of the two tasks has
requested PvmDontRoute or because no resources are available, then the default route through the PVM daemons is used. pvm_advise can be
called multiple times to selectively establish direct links, but is typically set only once near the beginning of each task. PvmAllowDi-
rect is the default advise setting. This setting on task A allows other tasks to set up direct links to A. Once a direct link is estab-
lished between tasks both tasks will use it for sending messages. pvm_advise returns the error status in info. The performance of direct
task-to-task links can be up to a factor of two better than the default route. The draw back is a lack of scalability of the direct links.
Some versions of UNIX limit the number of links to no more than 30.
EXAMPLES
C:
info = pvm_advise( PvmRouteDirect );
Fortran:
CALL PVMFADVISE( PVMROUTEDIRECT, INFO )
ERRORS
This error condition can be returned by pvm_advise
PvmBadParam
giving an invalid route value.
SEE ALSO pvm_setopt(3PVM)
30 August, 1993 ADVISE(3PVM)