父进程跑一个任务,子进程跑一个任务
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(pid > 0)
{
printf("this is parent %d %d\n",getpid(),pid);
sleep(3);
printf("父进程的正文准备被替换\n");
int a = 10;
execl("./3","cat","-n",NULL);
printf("父进程已经被替换\n");
}
if(pid = 0)
{
for(int i=0;;i++)
{
printf("%d %d __%d__\n",getppid(),getpid(),__LINE__);
sleep(1);
}
printf("子进程准备退出\n");
exit(55);
}
else
{
perror("fork");
return -1;
}
return 0;
}
#include <stdio.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
while(1)
{
printf("hello word\n");
printf("执行父进程啦\n");
sleep(1);
}
return 0;
}
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(0 == pid)
{
while(1)
{
printf("this is chlid %d %d\n",getppid(),getpid());
sleep(1);
}
}
return 0;
}
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(0 == pid)
{
setsid();//创建一个新的会话组
chdir("/");//修改当前孤儿进程的运行目录为不可删除的目录
umask(0);//重设文件权限掩码
for(int i = 0;i <getdtablesize();i++)
{
close(i);//关闭所有的文件描述符
}
while(1)
{
//周期性执行的功能代码
printf("this is chlid %d %d\n",getppid(),getpid());
sleep(1);
}
}
return 0;
}
4.守护进程不会将运行过程中的信息显示在终端上,且不会被其他同组进程影响,默默运行在后端。