进程创建:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
printf(“before fork\n”);
pid_t pid = fork();
if (pid == 0) {
//子进程
while (1)
printf("child\n");
}
else if (pid > 0) {
//父进程
while (1)
printf("parent\n");
}
else
{
//出错
perror("fork");
exit(1);
}
}
进程等待:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int g_data = 250;
int main( void )
{
pid_t pid = fork();
if ( pid == 0 ) {
g_data = 520;
printf("child g_data = %p\n", &g_data);
printf("child value = %d\n", g_data);
} else {
sleep(1);
printf("parent g_data = %p\n", &g_data);
printf("parent value = %d\n", g_data);
}
}
进程终止:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
int main(void)
{
pid_t pid = fork();
if( pid == 1)
perror("fork"),exit(EXIT_FAILURE);
if (pid == 0)
{
sleep(20);
printf("get over pid = %d\n",getpid());
exit(125);
}
else
{
int s;
pid_t r = wait(&s);
printf("r = %d\n",r);
if (WIFEXITED(s))
{
printf("code = %d\n",WEXITSTATUS(s));
}
}
}