I’m trying to create a child process in another process. I am writing both the programs in C language. First I write a dummy process which will be the child process. What it is doing is only to write a string on the screen. It works well on its own. Then I write another program which will be the parent process. However, I can’t make it happen. I’m trying to use fork and execl functions together, but I fail. I also want the child process does not terminate until the parent process terminates.
How should I write the parent process?
Thanks.
Here is the code for the child process:
#include <stdio.h>
int main(void) {
while(1) {
printf("*");
sleep(1);
}
}
And here is the parent process:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
if (fork()) {
while(1) {
printf("-\n");
sleep(5);
}
} else {
execl("./", "dummy", (char *)0);
}
}
The fork() system call may return three different statuses: failure (<0), parent process (>0) or child process (==0). You must test the return value properly.
Your execl() system call is wrong. The first argument is the path to the program you want to execute, “./” is not valid, it should be something like “./dummy” at least. The next argument is by convention the command name (argv[0] in the executed program), which may be a repetition of the first argument. So:
Also, note that the
printf("*")statement in the child program will probably buffer and you won’t see anything on the terminal. You must either add a “\n” to the end or callfflush(stdout)to flush the standard output.