Sponsored Content
Top Forums Programming Multiple process using fork() Post 302259405 by shashi on Tuesday 18th of November 2008 04:10:15 AM
Old 11-18-2008
Lightbulb Multiple process using fork()

I have a code which has four different process, each printing different message. I have provided it with user input (implemented using thread), depending on which the corresponding message from that process has to be printed.The code is shown below.when I run the pgm, it takes input such as 1,2,3........ through command prompt, and I get "bash command not found" Kindly help me to get output



#include<stdio.h>

#define _REENTRANT

#include<pthread.h>

#include<stdlib.h>

int i;

void DieWithError(char *errorMessage);

int key;

int z = 0;

void *key_hit1 (void *arg)

{

while(1)

{

key = (int)getchar();

switch(key)

{

case 49

printf("channel 1");

z = 1;

break;

case 50:

printf("channel 2");

z = 2;

break;

case 51:

printf("channel 3");

z = 3;

break;

}

}

}

int main()

{

pthread_t key_hit;

int process,process1,process2,process3,process4;

pthread_create(&key_hit,NULL,key_hit1,NULL);

/////////////

process = fork();

if(process == 0)

{

if( z == 1)

{

for(i=0;i<10;i++)

printf(" ans");

}

}

else if (process != 0)

process1 = fork();

if(process1 == 0)

{

if( z == 2)

{

for(i=0;i<10;i++)

printf(" qwe");

}

}

else if (process1 != 0)

process2 = fork();

if(process2 == 0)

{

if( z == 3)

{

for(i=0;i<10;i++)

printf(" dhg");

}

}

}

Last edited by shashi; 11-19-2008 at 01:24 AM.. Reason: things are getting jumbled
 

10 More Discussions You Might Find Interesting

1. Programming

Reference Variables To A Child Process Created With Fork

Hi! IN THE FOLLOWING PROGRAM THE VALUE OF j REMAINS UNCHANGED . WHY ? IF I WANT A VARIABLE VALUE TO CHANGE LIKE THIS , IS THERE ANY WAY TO DO IT ? Or do we have to use shared memory variables? main() { int return_pid, i, total; int j=1; total = TOTALRECS+1; for... (2 Replies)
Discussion started by: AJAY BHATIA
2 Replies

2. UNIX for Dummies Questions & Answers

Cannot fork , too many process - SCO Unix 5.05

I need a help... I have a HP Netserver LH 6000 U with Hardware Raid . Sco 5.0.5 installed with Oracle database. Total number of users, normally logged in are around 60 nos. The system is very slow ( takes 6 hours for processing one Lakh bills) during the Billing process. Also it is... (1 Reply)
Discussion started by: saleeshpl
1 Replies

3. HP-UX

error : can not fork new process

hi today we came across error "can not fork new process" when i checked there were 400 ksh processes were running for that particular user ( due to kernel parameter setting no of processes were restricted to 400 ) and the reason for this was somebody executed shell script which had "*" ( only *... (3 Replies)
Discussion started by: zedex
3 Replies

4. UNIX for Dummies Questions & Answers

cannot fork process on IBM - AIX

Hi, Currently, I'm getting the foll error on an IBM AIX /etc/profile: 0403-030 The fork function failed. Too many processes already exist. How can i check the current no. of processes which can run simultaneously on an IBM AIX machine for oracle user and how can i change ? Thanks Vin (1 Reply)
Discussion started by: win_vin
1 Replies

5. Red Hat

Fork wait in background process - large delay

hi all, We are trying to run a process in the background and in the process we call fork ;and wait for the child process to finish .We find that the died = wait(&status); happens after 10 seconds randomly and sometimes completes in time (within 1 sec) This behavior is seen only when the... (0 Replies)
Discussion started by: vishnu.priya
0 Replies

6. Programming

Timed action after fork() in parent process

Assume you have such a piece of (more or less pseudo-)code: if(fork() == 0) {// childprocess chmod(someProgram, 00777); exec(someProgram); } else { // assume it never fails and this is the parent chmod(someProgram, 00000); // should be executed as soon as possible after the... (5 Replies)
Discussion started by: disaster
5 Replies

7. Programming

fork n process

Making a C program (process PP) that satisfies the following requirements: 1. Pp receives 3 ≤ N ≤ 10 arguments on the command line invocation, to interpret as a whole and thus should be 1 ≤ Ni ≤ 4; 2. Pp initially will have to create N processes Pi children facing a range of life to ... (1 Reply)
Discussion started by: loweherz
1 Replies

8. Programming

Generating Random Number in Child Process using Fork

Hello All, I am stuck up in a program where the rand functions ends up giving all the same integers. Tried sleep, but the numbers turned out to be same... Can anyone help me out how to fix this issue ? I have called the srand once in the program, but I feel like when I call fork the child process... (5 Replies)
Discussion started by: manisum
5 Replies

9. Programming

Problem with fork() and execlp process

Hello everyone, this is my first post. I have a task to use a fork to create multiple processes and then use execlp to run another program to add 2 numbers. The problem I am having is we are supposed to use the exit() call in the execlp to return the small integer. This is a bad way to... (3 Replies)
Discussion started by: Johnathan_1017
3 Replies

10. Shell Programming and Scripting

Sleep 600 or fork/spawn a process or daemon?

Hi, I have a script that run every 10 minutes, from a specific timeframe of the day, for example 0500 - 1900. The script is some sort of checker script for an application log file and check for errors and email us if there is error/s reported in the log. At the moment, I schedule it... (1 Reply)
Discussion started by: newbie_01
1 Replies
PTHREAD_ATFORK(3)					     Library Functions Manual						 PTHREAD_ATFORK(3)

NAME
pthread_atfork - register handlers to be called at fork(2) time SYNOPSIS
#include <pthread.h> int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)); DESCRIPTION
pthread_atfork registers handler functions to be called just before and just after a new process is created with fork(2). The prepare han- dler will be called from the parent process, just before the new process is created. The parent handler will be called from the parent process, just before fork(2) returns. The child handler will be called from the child process, just before fork(2) returns. One or several of the three handlers prepare, parent and child can be given as NULL, meaning that no handler needs to be called at the cor- responding point. pthread_atfork can be called several times to install several sets of handlers. At fork(2) time, the prepare handlers are called in LIFO order (last added with pthread_atfork, first called before fork), while the parent and child handlers are called in FIFO order (first added, first called). To understand the purpose of pthread_atfork, recall that fork(2) duplicates the whole memory space, including mutexes in their current locking state, but only the calling thread: other threads are not running in the child process. The mutexes are not usable after the fork and must be initialized with pthread_mutex_init in the child process. This is a limitation of the current implementation and might or might not be present in future versions. RETURN VALUE
pthread_atfork returns 0 on success and a non-zero error code on error. ERRORS
ENOMEM insufficient memory available to register the handlers. AUTHOR
Xavier Leroy <Xavier.Leroy@inria.fr> SEE ALSO
fork(2), pthread_mutex_lock(3), pthread_mutex_unlock(3). LinuxThreads PTHREAD_ATFORK(3)
All times are GMT -4. The time now is 04:54 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy