精华内容
下载资源
问答
  • Linux C语言执行命令行

    千次阅读 2020-07-13 10:52:25
    char* arg[3]; char *envp[] = {0,NULL}; arg[0]="mkdir"; arg[1]="./user/Jack";...所以我们得搞个子进程去执行,才不会影响主进程 第一个参数: 文件名—就是你要用的命令对应的文件 例:ls,cd 这
    char* arg[3];
    char *envp[] = {0,NULL};
    arg[0]="mkdir";
    arg[1]="./user/hello";
    arg[2]=NULL;
    if(fork()==0){
        execve("/usr/bin/mkdir",arg,envp);
    } 
    else {
        return 0;
      }
    

    Ps: execve()在执行完成后会终止当前进程

    所以我们得搞个子进程去执行,才不会影响主进程

    第一个参数:

    文件名—就是你要用的命令对应的文件

    例:ls,cd

    这些常用的命令都是存在/usr/bin目录下

    (当然也可以是其他可执行的文件,不过像gedit这样有GUI程序,C语言不支持,会报错)

    第二个参数:

    arg—命令和需要的参数,并且最后一个参数是NULL,作为结束标志

    Ps:那我上面的 mkdir 举例

    新建的文件夹默认是在当前目录

    如果需要在子目录里新建,则在文件路径那花点心思就行了

    像:

    ./user/hello
    

    第三个参数:

    envp—用于配置环境变量,一般情况下不用管它

    展开全文
  • 命令行传递的参数称为命令行参数。这些参数由main()函数来处理的。要支持命令行参数,您需要更改main()函数的结构,如下所示 -int main(int argc, char *argv[] )C在这里,argc计算参数的数量。它将文件名称作为第...

    从命令行传递的参数称为命令行参数。这些参数由main()函数来处理的。

    要支持命令行参数,您需要更改main()函数的结构,如下所示 -

    int main(int argc, char *argv[] )

    C

    在这里,argc计算参数的数量。它将文件名称作为第一个参数。

    argv []包含参数的总数。第一个参数永远是此程序的文件名。

    命令行参数实例

    我们来看一下命令行参数的例子,用文件名传递一个参数。创建一个源文件:main-commandline.c,其代码如下所示 -

    #include

    void main(int argc, char *argv[] ) {

    printf("Program name is: %s\\n", argv[0]);

    if(argc < 2){

    printf("No argument passed through command line.\\n");

    }

    else{

    printf("First argument is: %s\\n", argv[1]);

    }

    }

    C

    在Linux上执行上面示例代码,得到以下结果 -

    root@AYZ:~# gcc main-commandline.c

    root@AYZ:~# ./a.out argc_value

    Program name is: ./a.out

    First argument is: argc_value

    Shell

    在Windows中从命令行运行以下程序:

    F:\\>cd worksp\\clanguage\\command-line-arguments\\debug

    F:\\worksp\\clanguage\\command-line-arguments\\Debug>dir

    驱动器 F 中的卷是 Others

    卷的序列号是 0007-6F29

    F:\\worksp\\clanguage\\command-line-arguments\\Debug 的目录

    2017/08/18 01:23

    2017/08/18 01:23

    2017/08/18 01:23 37,376 command-line-arguments.exe

    2017/08/18 01:23 291,652 command-line-arguments.ilk

    2017/08/18 01:23 552,960 command-line-arguments.pdb

    3 个文件 881,988 字节

    2 个目录 53,178,052,608 可用字节

    F:\\worksp\\clanguage\\command-line-arguments\\Debug>command-line-arguments.exe test-arg

    Program name is: command-line-arguments.exe

    First argument is: test-arg

    F:\\worksp\\clanguage\\command-line-arguments\\Debug>

    Shell

    如果传递很多参数,它只会打印一个,如下:

    root@AYZ:~# ./a.out hello I am Maxsu

    Program name is: ./a.out

    First argument is: hello

    Shell

    但是,如果您在双引号内传递许多参数,则所有参数将被视为单个参数。如下 -

    root@AYZ:~# ./a.out "hello I am Maxsu"

    Program name is: ./a.out

    First argument is: hello I am Maxsu

    Shell

    您可以编写程序来打印所有参数。在这个程序中,我们只打印argv [1],这就是为什么只打印一个参数的原因了,您可以根据需要使用或打印argv [2],argv [3],argv [4]....等等。

    展开全文
  • C语言命令行参数

    2020-06-26 22:00:36
    C语言命令行参数 在图形界面普及前都是用命令行界面。命令行(command line)是在命令行环境中,用户为运行程序输入命令的行。命令行函数(command-line argument)是同一行的附加项。如下例是unix环境下的命令行: $...

    C语言的命令行参数

    在这里插入图片描述
    在图形界面普及前都是用命令行界面。命令行(command line)是在命令行环境中,用户为运行程序输入命令的行。命令行函数(command-line argument)是同一行的附加项。如下例是unix环境下的命令行:

    $ fuss -r Ginger
    

    fuss就是命令行,后面的是命令行参数。例如在windows中常用的查看ip地址的命令

    C> ipconfig /all
    

    ipconfig是命令行,后面的是参数。

    一个C程序可以读取并使用这些附加项。

    示例:

    /* repeat.c -- main() with arguments */
    #include <stdio.h>
    int main(int argc, char *argv[])
    {
        int count;
        
        printf("The command line has %d arguments:\n", argc - 1);
        for (count = 1; count < argc; count++)
            printf("%d: %s\n", count, argv[count]);
        printf("\n");
        
        return 0;
    }
    

    把该程序编译为可执行程序repeat。下面是通过命令行运行该程序后的输出:

    $ ./repeat.exe  Resistance is futile
    The command line has 3 arguments:
    1: Resistance
    2: is
    3: futile
    

    我这里的运行环境是windows下Cygwin模拟的命令终端的运行结果。其他环境输出结果是一样的。

    运行原理:

    C编译器允许main()函数没有参数或两个参数(一些实现允许main()有更多参数,属于对标准的拓展)。main()有两个参数,第一个参数是命令行中的字符串。过去,这个int类型的参数被称为argc(表示参数计数(argument count))。系统用空格表示一个字符串的结束和下一个字符串的开始。

    上面的程序的命令行有4个字符串,第1个是命令名。后面3个是命令行参数,供repeat使用。main()的第2个参数,是指向指针的指针,称为argv(表示参数值(argument value)),他存储了指向这4个字符串的地址。如下

    argv[0] 指向 repeat(大部分系统而言)

    argv[1]指向 Resistance

    argv[2]指向 is

    argv[3]指向 futile

    main()中的形参形式与其他带形参的函数相同,argv也可以这样声明

    int main(int arc, char **argv);

    另外,许多环境(包括UNIX和DOS)都允许用双引号把多个单词括起来形成一个参数。例如:

    repeart "I am hungry" now

    这行命令把 "I am hungry"赋值给argv[1],把"now"赋给argv[2]。


    参考文献:

    [1] 史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

    展开全文
  • c语言命令行编译运行程序Sometimes, we may need to execute Linux/Windows DOS commands through our C program. (Note: the code given below is compiled and executed on Linux GCC compiler, so here we are ...

    c语言用命令行编译运行程序

    Sometimes, we may need to execute Linux/Windows DOS commands through our C program. (Note: the code given below is compiled and executed on Linux GCC compiler, so here we are testing Linux commands only).

    有时,我们可能需要通过C程序执行Linux / Windows DOS命令 。 (注意:下面给出的代码是在Linux GCC编译器上编译和执行的 ,因此这里我们仅测试Linux命令)。

    In the C programming standard library, there is a function named system () which is used to execute Linux as well as DOS commands in the C program.

    在C编程标准库中,有一个名为system()的函数,该函数用于执行Linux以及C程序中的DOS命令。

    A command can be assigned directly to the function as an argument and command may also input from the user and then assigned to the function, function will send command to the operating system’s particular terminal like Linux terminal or DOS commands terminal to execute, and after the execution, you will get your output and program’s execution returns to the next statement written after the system() function.

    可以将命令作为参数直接分配给函数,也可以从用户输入命令,然后将其分配给函数,函数会将命令发送到操作系统的特定终端(例如Linux终端或DOS命令终端)以执行,然后执行,您将获得输出,程序的执行返回到在system()函数之后编写的下一条语句。

    C中的system()函数 (system() function in C)

    system() is a library function, which is defined in the stdlib.h header file. It is used to execute the Linux commands/Windows DOS commands.

    system()是一个库函数,该函数在stdlib.h头文件中定义。 它用于执行Linux命令/ Windows DOS命令。

    Syntax:

    句法:

    system(char *command);
    

    Example:

    例:

        char *command = "ls";
        system(command);
    
    
    

    在C程序中运行Linux命令的程序 (Program to run Linux commands within C program)

    #include <stdio.h>
    #include <stdlib.h>	//to use system()
    #include <string.h> //to use strcpy()
    
    int main()
    {
    	char *command;
    	
    	//executing ls command
    	strcpy(command, "ls");
    	printf("ls command...\n");
    	system(command);
    	
    	//executing date command 
    	strcpy(command, "date");
    	printf("date command...\n");
    	system(command);
    	
    	return 0;
    }
    
    

    Output

    输出量

        Please run this program at your machine
    
    
    

    翻译自: https://www.includehelp.com/c/executing-system-commands-using-c-program.aspx

    c语言用命令行编译运行程序

    展开全文
  • c语言命令行参数

    千次阅读 2014-04-06 19:27:23
    C语言命令行参数实例代码教程 -它是可能的C程序执行时,在命令行中传递一些值。这些值被称为命令行参数,很多时候,你的程序是非常重要的,特别是当你要控制你的程序从外部而不是硬编码在代码中的这些值。 它是...
  • C语言 | 命令行参数

    2021-01-04 13:38:52
    执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来...
  • C语言——命令行参数

    2020-05-29 14:39:50
    执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来...
  • [C语言] 命令行参数

    2019-08-19 00:51:42
    C语言源程序经编译和连接处理,生成可执行程序后,才能运行。例如,test.c是一个简单的C语言源程序: #include<stdio.h> int main(void) { printf("Hello world\n"); return 0; } 经过编译和连接...
  • c语言+命令行参数In this article, we’ll be looking at how we can use command line arguments in C / C++. 在本文中,我们将研究如何在C / C ++中使用命令行参数。 Command Line arguments are very useful if ...
  • C语言命令行参数

    2011-11-13 11:08:12
    C语言命令行参数argc,argv[转] 关键词: argc,argv main(int argc,char **argv) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] main()括号内是固定的写法。 下面给出一...
  • C语言命令行之间的交互

    多人点赞 热门讨论 2021-07-22 16:34:16
    在Windows操作系统中,凡是.exe的文件,都可以作为一条命令,在命令行中来执行。例如:在我的电脑D盘cPro文件夹中就有很多编译好的.exe可执行文件: Win + R 键输入cmd,进入命令行: 然后输入命令进入到D:\cPro
  • C语言讲解命令行参数

    2018-11-10 12:02:00
    命令行(command line):是在命令行环境中,用户为运行程序输入命令的行。 命令行参数(command-line argument):是同一行的附加项。 C编译器允许main()没有参数或者有两个参数 第一个参数:argc(argument ...
  • 这是可能在命令行中的一些值传递给C程序执行。特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要。命令行参数使用main()函数的参数,其中argc是...
  • c语言命令行编译运行程序 编译并运行C程序 (Compile and Run C Program) To compile and run a C language program, you need a C compiler. To setup a C language compiler in your Computer/laptop, there are...
  • 32 C语言 - 命令行参数

    2019-10-22 14:37:37
    执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来...
  • #include&lt;stdio.h&gt; int main(int argc, char *argv[]) { int i; for(i=0;i&lt;argc;i++) ...在Linux命令行执行以下函数输出结果为 结合Linux下相关API,可以实现一个cp...
  • c语言命令行参数argc,argv

    千次阅读 2007-05-11 12:58:00
    c语言命令行参数argc,argv c语言命令行参数argc,argv关键词: argc,argv main(int argc,char **argv)arg
  • C语言命令行接收参数

    千次阅读 2015-11-24 00:06:31
    分析这样的题目设包含如下程序的文件名为myprog.c编译后输入命令:myprog how are you则执行结果是( )。#include int main(int argc, char * argv[]) { int i; for (i = 1; i ; i++) printf("%s%c",argv[i], ...
  • C语言实现命令行窗口

    千次阅读 2013-10-10 15:45:51
    我想用C语言在windows下实现创建一个命令行窗口(类似cmd.exe这种),可以交互式的输入命令实现一些控制。 一种方式是main函数带参数argc argv,但是这样每次运行都需要先打开cmd然后输入可执行文件名加参数,怎么样...
  • 最近更新:26th 4月, 2015开始int main(int argc, const char * argv[])在学习C语言的时候,大家都是编写一个程序,然后在终端运行查看结果,输入数字等等……不知道大家有没有尝试过让你编写的程序能够像系统命令...
  • 执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,184
精华内容 29,673
关键字:

c语言执行命令行

c语言 订阅