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 communicate but it's what we are supposed to do for the sake of this program.
Here is my program
and here is the execlp process
My problem is NO MATTER WHAT I DO, the status is ALWAYS printing a 0, I do not know how to retrieve the sum that is returned from the worker process.
Please, I am so confused and have been up for 2 nights wondering about this
Thanks,
John
Last edited by jim mcnamara; 02-10-2013 at 12:51 PM..
I don't really know much about C++, but three things stood out as I skimmed your code:
1) execlp's list of args isn't null pointer terminated.
2) The int in status is not the exit status of the child; it's a bitmask which includes other information. To retrieve the exit status requires masking out all but the 8 bits which encode it. For that, macros are provided. See your wait/waitpid man page for specifics.
3) exit(-1) won't do want you expect. Only the least significant 8 bits of -1 will be used. The resulting exit status will be 255.
Also, your code would be easier to digest if it were enclosed within code tags instead of icode.
with waitpid, use the WIFEXITED macro and WIFEXITSTATUS
valid retcode is always 0 - 255. If WIFEXITED fails you have to use WIFSIGNALED the way you used WIFEXITED. And then some other implementation defined macros like WIFTERMSIG WIFCOREDUMP. There are other choices, too.
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)
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)
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)
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)
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... (1 Reply)
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)
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 Reply)
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)
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)
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)