02-10-2013
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.
Regards and welcome,
Alister
Last edited by alister; 02-10-2013 at 11:24 AM..
10 More Discussions You Might Find Interesting
1. Programming
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
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
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. Programming
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)
Discussion started by: shashi
1 Replies
5. UNIX for Dummies Questions & Answers
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
6. Red Hat
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)
Discussion started by: vishnu.priya
1 Replies
7. Programming
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
8. Programming
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
9. Programming
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
10. Shell Programming and Scripting
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
wait.h(3HEAD) Headers wait.h(3HEAD)
NAME
wait.h, wait - wait status
SYNOPSIS
#include <sys/wait.h>
DESCRIPTION
When a process waits for status from its children using either the wait(3C) or waitpid(3C) function, the status returned can be evaluated
with the following macros, defined in <sys/wait.h>. These macros evaluate to integral expressions. The stat argument to these macros is the
integer value returned from wait() or waitpid().
WCOREDUMP(stat) If the value of WIFSIGNALED (stat) is non-zero, this macro evaluates to a non-zero value if a core image of
the terminated child was created.
WEXITSTATUS(stat) If the value of WIFEXITED(stat) is non-zero, this macro evaluates to the exit code that the child process
passed to _exit() (see exit(2)) or exit(3C), or the value that the child process returned from main.
WIFCONTINUED(stat) Evaluates to a non-zero value if status was returned for a child process that has continued.
WIFEXITED(stat) Evaluates to a non-zero value if status was returned for a child process that terminated normally.
WIFSIGNALED(stat) Evaluates to a non-zero value if status was returned for a child process that terminated due to the receipt
of a signal.
WIFSTOPPED(stat) Evaluates to a non-zero value if status was returned for a child process that is currently stopped.
WSTOPSIG(stat) If the value of WIFSTOPPED(stat) is non-zero, this macro evaluates to the number of the signal that caused
the child process to stop.
WTERMSIG(stat) If the value of WIFSIGNALED(stat) is non-zero, this macro evaluates to the number of the signal that
caused the termination of the child process.
The <sys/wait.h> header defines the symbolic constants listed below for use with waitpid(3C).
WNOHANG Do not hang if no status is available; return immediately.
WUNTRACED Report status of stopped child process.
The symbolic constants listed below are defined as possible values for the options argument to waitid(2).
WEXITED Wait for processes that have exited.
WSTOPPED Status is returned for any child that has stopped upon receipt of a signal.
WCONTINUED Status is returned for any child that was stopped and has been continued.
WNOHANG Return immediately if there are no children to wait for.
WNOWAIT Keep the process whose status is returned in infop in a waitable state.
The type idtype_t is defined as an enumeration type whose possible values include the following:
P_ALL
P_PID
P_PGID
The id_t and pid_t types are defined as described in <sys/types.h>.
The siginfo_t type is defined as described in <signal.h>.
The rusage structure is defined as described in <sys/resource.h>.
Inclusion of the <sys/wait.h> header can also make visible all symbols from <signal.h> and <sys/resource.h>.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Interface Stability |Standard |
+-----------------------------+-----------------------------+
SEE ALSO
exit(2), waitid(2), exit(3C), wait(3C), waitpid(3C),attributes(5), standards(5)
SunOS 5.10 10 Sep 2004 wait.h(3HEAD)