可以在哪些网站 app做推广的,网站规划与建设步骤,怎么创建自己公司的网站,wordpress 用户功能先了解 linux系统中 会话的概念 会话是进程组的更高一级#xff0c;多个进程组对应一个会话。 会话是一个或多个进程组的集合 创建一个会话需要注意以下5点事项#xff1a; a. 调用进程不能是进程组组长#xff0c; 该进程变成新会话首进程#xff08;session header#… 先了解 linux系统中 会话的概念 会话是进程组的更高一级多个进程组对应一个会话。 会话是一个或多个进程组的集合 创建一个会话需要注意以下5点事项 a. 调用进程不能是进程组组长 该进程变成新会话首进程session header b. 该进程成为一个新进程组的组长进程。 c. 新会话丢弃原有的控制终端该会话没有控制终端 d. 该调用进程是组长进程 则出错返回 e. 建立新会话先调用fork,父进程终止子进程调用setsid 守护进程 Daemon精灵进程是Linux后台服务进程。独立于控制终端一般采用以d结尾的名字 创建守护进程最关键的一步是调用setid函数创建一个新的session并成为Session Leaders。
创建守护进程步骤
代码案例 创建一个守护进程每隔一定时间创建一个文件
#include stdio.h
#include fcntl.h
#include string.h
#include unistd.h
#include sys/types.h
#include sys/stat.h
#include stdlib.h
#include time.h
#include signal.h
#include sys/time.h#define _FILE_NAME_FORMAT %s/temp1/mydaemon.%ld
void catch(int sigNum) {char *homePath getenv(HOME);char strFileName[128] {\0};sprintf(strFileName, _FILE_NAME_FORMAT, homePath, time(NULL));int fd open(strFileName, O_RDWR|O_CREAT, 0666);printf(filename is %s\n, strFileName);if(fd 0) {perror(open file error\n);}close(fd);
}int main() {pid_t pid fork();if(pid 0) {exit(0);}printf(pid is %d\n, getpid());pid_t spid setsid();umask(0);chdir(getenv(HOME));printf(spid is %d\n, spid);struct sigaction myact;myact.sa_flags 0;sigemptyset(myact.sa_mask);myact.sa_handler catch;sigaction(SIGALRM, myact, NULL);struct itimerval itv {{5,0},{3,0}};setitimer(ITIMER_REAL, itv, NULL);while (1) {sleep(1);}return 0;
}ps:关于 umask的使用 设置为 0 而创建文件的守护用的是 0666 那么对应的 就是0666 - 0000权限为 rw-rw-rw-, 如果umask设置为2 对应的就是 0666 - 0002权限为rw-rw-r–
使用 nohup 命令可以简单的创建后台进程
nohup ./a.out
表示后台运行 这个命令能屏蔽SIGHUP命令 ‘’ 可以将输出重定向
nohup命令 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业