使用调度程序 可以实现周期性启动脚本/服务程序
简单的示例程序 每2秒往1.txt写入hello
#include#include #include #include #include #include int main(int argc,char *argv[]) { if (argc<3) { printf("Using:./procctl timetvl program argv ..n"); printf("Example:/project/tools1/bin/procctl 60 /usr/bin/touch 'hello'>>1.txtnn"); printf("本程序是服务程序的调度程序,周期性启动服务程序/shell脚本。n"); printf("program 被调度的程序名,必须使用全路径。n"); printf("argvs 被调度程序的参数。n"); printf("注意:本程序不会被kill杀死,但可以使用kill -9 强行杀死。nn"); return -1; } for (int ii=0;ii<64;ii++) { signal(ii,SIG_IGN); // 屏蔽全部信号 //close(ii); // 关闭io 根据自己的情况选择关闭 } signal(SIGCHLD,SIG_DFL); // 恢复子进程退出信号 不然wait一直阻塞 子进程一直生成 // 获取时间后面的 运行程序及参数 char *pargv[argc]; for (int ii=2;ii 0) exit(0); // 进程2 使用execv函数调用程序 // 进程1 阻塞等待进程2结束 等待argv[1]秒后 循环继续 while(true) { // 子进程调用程序 if (fork()==0) { execv(argv[2],pargv); // 参数1 调用的程序名 参数2 程序参数 exit(0); } else // 父进程阻塞等待子进程退出 { int status; wait(&status); sleep(atoi(argv[1])); // 参数2 调度时间 } } return 0; }
关于关闭父进程的解答
关闭父进程 进程直接属于操作系统托管
不关闭 属于终端托管会卡窗口
卡窗口 无法操作



