在linux 下代替system但比system更节约空间

来源:互联网 发布:海通证券交易软件下载 编辑:程序博客网 时间:2024/05/13 03:44

int my_system(char* cmd) 
    int status = 0; 
    pid_t pid; 

    if ((pid = vfork()) <0) 
    {  
        status = -1; 
    } 
    else if (pid==0) 
    { 
        const char *new_argv[4]; 
        struct sigaction sa_cld; 
        sa_cld.sa_handler = SIG_DFL; 
        sa_cld.sa_flags = 0; 

        /* 在子进程中放开SIGINT信号 */ 
        sigemptyset(&sa_cld.sa_mask); 
        sigaction (SIGINT, &sa_cld, NULL); 
        sigaction (SIGQUIT, &sa_cld, NULL); 
      
        new_argv[0] = "sh"; 
        new_argv[1] = "-c"; 
        new_argv[2] = cmd; 
        new_argv[3] = NULL; 

        //execl("/bin/sh","sh","-c" ,cmd,(char *)0);
        if (execve("/bin/sh",(char *const *) new_argv, NULL) <0) 
        { 
            printf("fail to execve %s! errno: %d\n",cmd); 
            exit(1); 
        } 
        else 
        { 
            exit(0); 
        } 
    } 
    else 
    { 
        waitpid(pid,&status,0); 
    } 
    retu
0 0