zoukankan      html  css  js  c++  java
  • C语言程序设计--执行命令

    1.system函数



    1.1函数原型


    int system(char *command);
    

    1.2解释


    system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。命令执行成功则返回0,否则返回一个非0值。

    1.3实验


    #include <stdio.h>
    #include <stdlib.h>
    int main(void){
    	int ret1 = system("id");
    	printf("%d
    ",ret1);
    	int ret2 = system("sli");
    	printf("%d
    ",ret2);
    	return 0;
    }
    

    2.popen函数



    2.1函数原型

    FILE *popen(const char *command, const char *type);
    int pclose(FILE *stream);
    

    2.2解释


    popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c command来执行参数command的指令。

    2.3实验

    #include <stdio.h>
    #include <stdlib.h>
    //使用方法类似文件读写
    int main(void){
    	FILE* process;
    	char buffer[1024];
    	process = popen("id", "r");
    	fgets(buffer, sizeof(buffer), process);
    	printf("%s", buffer);
    	pclose(process);
    	return 0;
    }
    

    3.exec函数族



    3.1函数原型


    int execl(const char *path, const char *arg, ...);
    int execlp(const char *file, const char *arg, ...);
    int execv(const char *path, char *const argv[]);
    int execvp(const char *file, char *const argv[]);
    int execle(const char *path, const char *arg,..., char * const envp[]);
    int execve(const char *filename, char *const argv[],char *const envp[]);
    

    3.2解释


    /*
    exec函数
    调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行。
    因为调用exec并不创建新进程,所以前后的进程I D并未改变。
    exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。
    */
    
  • 相关阅读:
    yii2权限控制rbac之rule详细讲解
    yii2权限控制rbac之详细操作步骤
    安装 Autoconf, Automake & Libtool
    Linux查看物理CPU个数、核数、逻辑CPU个数
    Nginx端口占用问题
    Druid加密
    Ubuntu16.04安装Zabbix3.2(快速安装教程)
    飞冰ICE
    BeiDou开源项目
    Arthas开源项目
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/10334519.html
Copyright © 2011-2022 走看看