创建守护进程的代码,要求写上每一步的注释
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main(int argc, const char *argv[])
{
//创建一个子进程
pid_t pid = fork();
if(pid>0)
{
}
else if(pid ==0)
{
//创建新会话组
pid_t sid = setsid();
if(sid<0)
{
perror("setsid");
return -1;
}
printf("sid = %d\n",sid);
//修改运行目录为不可更改文件
chdir("/");
//umask清零
umask(0);
//关闭所有文件描述符
int i=0;
for(i=0;i<1024;i++)
{
close(i);
}
while(1)
{
//守护的代码,功能
sleep(1);
}
}
else
{
perror("fork");
return -1;
}
return 0;
}
2. pthread_create函数的代码示例捋清楚, 主线程中定义一个局部变量,分支线程中如何接收并打印
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<stdlib.h>
//分支线程
void* fengzhi(void* arg)
{
while(1)
{
printf("%d\n",*((int*)arg));
sleep(1);
}
return NULL;
}
int main(int argc, const char *argv[])
{
//创建一个分支线程
pthread_t a;
int *p=(int*)malloc(sizeof(int));
*p=12;
if(pthread_create(&a, NULL, fengzhi, p) != 0)//不为0创建失败
{
perror("pthread_create");
return -1;
}
printf("分支线程创建完成\n");
while(1)
{
printf("这是一个主线程\n");
sleep(1);
}
return 0;
}