|
The contents of this page are licensed under the following license
Operating System
Create a child process |
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int pid1, ppid1, pid2, ppid2;
int status;
pid1 = getpid();
ppid1 = getppid();
printf("Start\n");
/* create a child process */
switch (fork())
{
case -1:/* error */
perror("fork - can't create process");
break;
case 0 :/* child process */
pid2 = getpid();
ppid2 = getppid();
printf("Process: %d, Parent: %d\n", pid2, ppid2);
sleep(5);
break;
default:/* parent process */
printf("Process: %d, Parent: %d\n", pid1, ppid1);
wait(&status);
printf("End (status = %d)\n", status);
}
}
|
|
Executing programs within programs and redirecting standard streams |
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int fd, ppid;
/* close standard output */
close(1);
/* open file */
fd = open("results.txt", O_CREAT | O_WRONLY | O_APPEND, 0644);
if (fd == -1)
{
perror("Error open file");
exit(1);
}
/* create a child process */
if ((ppid = fork()) == 0)
{
/* execute ls command */
execlp("ls", "ls", "-l", "-a", "-i", NULL);
}
waitpid(ppid, NULL, NULL);
}
|
November, 29th 2006
© Michał Kalewski