如何使用C程序在终端上运行命令?

中打开的任何网站的 ip 我想用 C 语言创建一个程序,允许我在终端中运行命令。.

我用 shell 脚本编写了一个程序,它可以为我提供在浏览器中打开的任何网站的 ip。. 通过在终端 :

sudo tcpdump -n dst port 80 -i eth

中输入此命令来执行此 shell 脚本 我的教授告诉我用 C 语言创建一个程序,该程序将打开终端并输入此命令,然后我的 shell 脚本就可以工作了。.

请告诉我如何创建这样的程序。.

10
12.09.2012, 05:17
2 答案

您好,我将为您编写一个示例代码,向您解释,希望对您有所帮助。. 该函数的原型类似于 :

int 系统 (const char *cmd );

#包括  #包括  #包括  #定义 MAX _CMN _LEN 100 int main (int argc, char *argv[] ){ 字符 cmd[MAX _CMN _LEN] = "", **p; 如果 (argc < 2 )/ *没有指定命令 */ { fprintf (stderr,“用法 :./program _名称终端 _命令...” ); 退出(退出_失败); } 别的 { strcat (cmd,argv[1] ); 对于 (p = &argv[2]; *页; p++ ){ strcat (cmd, " " ); strcat (cmd,*p ); } 系统 (cmd ); } 返回0; } 

1 )。. 打开终端并编译程序

2 )。. 运行它 (例如在 Ubuntu )./program _名称 comman _名称 -任何东西 -任何东西

示例 :./a.out 语言环境 -a

此示例打印我的编译器 gcc 支持的所有语言环境。.

更多信息 :

p 是指向 char (的指针的指针,就像 argv 是 )p = &argv[2],指向 -任何字符串 我将所有 -任何内容添加到我的 cmd 字符串中 当 *p 指向 NULL 时,我退出循环 看看这个 :-> 我将使用此符号表示指向 (不要将其与右箭头选择运算符 )混淆。.

argv[0] -> 程序 _名称

argv[1] -> command _name (在此示例中,命令名称将是语言环境,但请输入您要检查的命令 )

argv[2] -> -任何 (在这个例子中 -a,这是所有语言环境 )

在本例中,argv[3] -> NULL (, 这将退出循环 )

好的,就是这样,我想。.

6
11.23.2019, 03:31
  • 1
    确保不要将其用作 setuid 可执行文件,因为它具有明显的缓冲区 -溢出漏洞。 –  Community 04.30.2017, 03:30

您好,我将为您编写一个示例代码,向您解释,希望对您有所帮助。. 该函数的原型类似于 :

int 系统 (const char *cmd );

#包括  #包括  #包括  #定义 MAX _CMN _LEN 100 int main (int argc, char *argv[] ){ 字符 cmd[MAX _CMN _LEN] = "", **p; 如果 (argc < 2 )/ *没有指定命令 */ { fprintf (stderr,“用法 :./program _名称终端 _命令...” ); 退出(退出_失败); } 别的 { strcat (cmd,argv[1] ); 对于 (p = &argv[2]; *页; p++ ){ strcat (cmd, " " ); strcat (cmd,*p ); } 系统 (cmd ); } 返回0; } 

1 )。. 打开终端并编译程序

2 )。. 运行它 (例如在 Ubuntu )./program _名称 comman _名称 -任何东西 -任何东西

示例 :./a.out 语言环境 -a

此示例打印我的编译器 gcc 支持的所有语言环境。.

更多信息 :

p 是指向 char (的指针的指针,就像 argv 是 )p = &argv[2],指向 -任何字符串 我将所有 -任何内容添加到我的 cmd 字符串中 当 *p 指向 NULL 时,我退出循环 看看这个 :-> 我将使用此符号表示指向 (不要将其与右箭头选择运算符 )混淆。.

argv[0] -> 程序 _名称

argv[1] -> command _name (在此示例中,命令名称将是语言环境,但请输入您要检查的命令 )

argv[2] -> -任何 (在这个例子中 -a,这是所有语言环境 )

在本例中,argv[3] -> NULL (, 这将退出循环 )

好的,就是这样,我想。.

6
11.23.2019, 03:31

標籤

相關問題