02-01-2004
another qustion about fork
hi there this program runs
but i m jus trying out a few things here to have an indepth knowledge about different possibilities.
can someone comment on this please.
#include<stdio.h>
#define DIM 8
int main()
{
int pid, i, ans;
int arr[DIM] = {1,2,3,4,5,6,7,8};
pid = fork();
/*printf("%d\n",pid);
printf("%d\n",getpid());
printf("%d\n",getppid());
*/
if(pid==0)
{
ans = 0;
for(i=0;i<DIM;i++)
{
ans = ans + arr[i];
printf("Child sum %d\n", ans);
}
_exit(0);
}
// printf("%d\n",getpid());
if(pid<0)
{
fprintf(stderr, "error\n");
exit(1);
}
ans = 1;
for(i=0;i<DIM;i++)
{
ans = ans * arr[i];
printf("Parent %d\n",ans);
}
}
===========
heres my out put
Child sum 1
Child sum 3
Child sum 6
Child sum 10
Child sum 15
Child sum 21
Child sum 28
Child sum 36
Parent 1
Parent 2
Parent 6
Parent 24
Parent 120
Parent 720
Parent 5040
Parent 40320
=========
question: what if i had an if loop sayin
if(pid>0)
{
ans = 1;
for(i=0;i<DIM;i++)
{
ans = ans * arr[i];
printf("Parent %d\n",ans);
}
}
the only difference here is i put a condition. but if i don't have a condition what would happen?
is there any difference?
does it matter?
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
What is a fork? Why would one create a fork? What are the advantages and disadvantages of using a fork?
Please advise.
Thank You.
Deepali (5 Replies)
Discussion started by: Deepali
5 Replies
2. UNIX for Dummies Questions & Answers
I have a basic question - how do I create and then use a mail list to be able to send a mailx email to multiple recipients.
I assume I create a test file using vi, containing the email addresses - but what is the format - are the addresses separated by ";", or by spaces, ....???
Is there a... (1 Reply)
Discussion started by: HikerLT
1 Replies
3. Programming
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#define MAX_COUNT 200
#define BUF_SIZE 100
void main(void)
{
pid_t pid;
int i;
char buf;
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf,... (2 Replies)
Discussion started by: MKSRaja
2 Replies
4. Programming
Hello all.
I'm developing a filetransfer application, which is supposed to work sort of like dcc, with multiple transfers etc. Now i wonder what the best way to manage the transfers is. Should i fork() for each new transfer, hogging loads of memory or use pthreads? Maybe I can use select to see... (0 Replies)
Discussion started by: crippe
0 Replies
5. Programming
hi all
About this code
for (i = 1; i < n; i++)
if ((childpid = fork()) <= 0)
break;
I really can't understand the output .
and the way fork () return the value .
how about the process Id ,the child process Id and the parent ID
in this case
so please answer me soon (5 Replies)
Discussion started by: iwbasts
5 Replies
6. Programming
Hi everybody,
I wanna write a code to understand how fork works.
my target
--------------
-Parent creates a file(called temp) and writes into this file "1".Then it closes the file.
-Then parent creates a child and wait until execution of this child ends.
-Then child opens the same... (3 Replies)
Discussion started by: alexicopax
3 Replies
7. UNIX for Advanced & Expert Users
Hi,
I wrote a simple program for understanding the fork command. The code is as below
int main(void)
{
fork(); printf("hi 1 \n");
fork(); printf("hi 2 \n");
fork(); printf("hi 3 \n");
}
I am getting a variation in the number of times the printf is called if i remove the \n from each of... (1 Reply)
Discussion started by: xyz123456
1 Replies
8. Programming
Hi,
I wrote a simple program for understanding the fork command. The code is as below
int main(void)
{
fork(); printf("hi 1 \n");
fork(); printf("hi 2 \n");
fork(); printf("hi 3 \n");
}
I am getting a variation in the number of times the printf is called if i remove the \n from each... (2 Replies)
Discussion started by: xyz123456
2 Replies
9. Programming
does fork() spawn only the parent process, what if fork() is looped, does it spawn the parent and the child? (4 Replies)
Discussion started by: Peevish
4 Replies
10. UNIX for Dummies Questions & Answers
I'm trying to run a simple test on how to use fork(), i'm able to execute the child process first then the parent, but how can I execute parent then child..?
Thanks! (1 Reply)
Discussion started by: l flipboi l
1 Replies
LEARN ABOUT DEBIAN
globus-fork-starter
GLOBUS-FORK-STARTE(8) University of Chicago GLOBUS-FORK-STARTE(8)
NAME
globus-fork-starter - Start and monitor a fork job
SYNOPSIS
globus-fork-starter
DESCRIPTION
The globus-fork-starter program is executes jobs specified on its standard input stream, recording the job state changes to a file defined
in the $GLOBUS_LOCATION/etc/globus-fork.conf configuration file. It runs until its standard input stream is closed and all jobs it is
managing have terminated. The log generated by this program can be used by the SEG to provide job state changes and exit codes to the GRAM
service. The globus-fork-starter program is typically started by the fork GRAM module.
The globus-fork-starter program expects its input to be a series of task definitions, separated by the newline character, each representing
a separate job. Each task definition contains a number of fields, separated by the colon character. The first field is always the literal
string 100 indicating the message format, the second field is a unique job tag that will be distinguish the reply from this program when
multiple jobs are submitted. The rest of fields contain attribute bindings. The supported attributes are:
directory
Working directory of the job
environment
Comma-separated list of strings defining environment variables. The form of these strings is var=value
count
Number of processes to start
executable
Full path to the executable to run
arguments
Comma-separated list of command-line arguments for the job
stdin
Full path to a file containing the input of the job
stdout
Full path to a file to write the output of the job to
stderr
Full path to a file to write the error stream of the job
Within each field, the following characters may be escaped by preceding them with the backslash character:
o backslash ()
o semicolor (;)
o comma (,)
o equal (=)
Additionally, newline can be represented within a field by using the escape sequence
.
For each job the globus-fork-starter processes, it replies by writing a single line to standard output. The replies again consist of a
number of fields separated by the semicolon character.
For a successful job start, the first field of the reply is the literal 101, the second field is the tag from the input, and the third
field is a comma-separated list of SEG job identifiers which consist the concatenation of a UUID and a process id. The globus-fork-starter
program will write state changes to the SEG log using these job identifiers.
For a failure, the first field of the reply is the literal 102, the second field is the tag from the input, the third field is the integer
representation of a GRAM erorr code, and the fourth field is an string explaining the error.
ENVIRONMENT
If the following variables affect the execution of globus-fork-starter
GLOBUS_LOCATION
Path to Globus Toolkit installation. This is used to locate the globus-fork.conf configuration file.
FILES
$GLOBUS_LOCATION/etc/globus-fork.conf
Path to fork SEG configuration file.
University of Chicago 12/01/2009 GLOBUS-FORK-STARTE(8)