zoukankan      html  css  js  c++  java
  • 进程

    一、网址参考

    二、实践

      1、进程创建

     1 shell = get_shell_name();
     2 if(!shell)
     3     return -1;
     4     
     5 child = vfork();
     6 if(child < 0)
     7     return -1;
     8 
     9 if(child == 0) {
    10     execle(shell, shell, "-c", str, (char *)NULL, NULL);
    11      _exit(127);
    12 }
    13 
    14 if(SYS_NOBLOCK == proctrl->blk)
    15     ret = safe_waitpid(child, &status, WNOHANG);
    16 else
    17     ret = safe_waitpid(child, &status, 0);
    18 
    19 if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
    20     return -1;
    21 }

      2、进程终止

    if(!proctrl)
        return -1;
    
    if(proctrl->child < 0)
        return -1;
    
    ret = kill(proctrl->child, SIGTERM);

           进程有可能没有真正被终止,需要加判断:

      通过进程的pid编号判断进程是否存在,主要是查看/proc中是否存在pid编号的文件夹:

    int check_dir_exist(const char *dir_path)
    {
        DIR *dir = NULL;
        int ret = -1;
        
        if(!dir_path)
            return -1;
    
        dir = opendir(dir_path);
        if(dir) {
            ret = 0;
            closedir(dir);
        }
        
        return ret;
    }
    int check_process_with_pid_num(int pid)
    {
        char pid_dir[64];
    
        if(pid <= 0)
            return -1;
    
        memset(pid_dir, 0, sizeof(pid_dir));
        snprintf(pid_dir, sizeof(pid_dir)-1, "/proc/%d", pid);
    
        return check_dir_exist(pid_dir);
    }
  • 相关阅读:
    mac下crontab定时任务使用
    javascript入门之算术乘法表
    原型模型
    Servlet开发
    工厂模式
    简单工厂模式
    Java设计模式之瞎BB的官话
    JavaBean技术
    软件设计模式之单例模式
    JSP页面请求与响应以及保存页面状态
  • 原文地址:https://www.cnblogs.com/shanyu20/p/13953430.html
Copyright © 2011-2022 走看看