Teh*_*lik 11 command-line scripts
我想用 C 语言创建一个程序,允许我在终端中运行命令。
我用 shell 脚本制作了一个程序,它会给我在我的浏览器中打开的任何网站的 ip。通过在终端中输入以下命令来执行此 shell 脚本:
sudo tcpdump -n dst port 80 -i eth
Run Code Online (Sandbox Code Playgroud)
我的教授告诉我用 C 语言创建一个程序,它会打开终端并输入这个命令,然后我的 shell 脚本就可以工作了。
请告诉我如何创建这样的程序。
您可以使用stdlib.h 中提供的system()函数来运行命令。
描述
system() 通过调用 /bin/sh -c string 执行 string 中指定的命令,并在命令完成后返回。命令执行过程中,SIGCHLD 将被阻塞,SIGINT 和 SIGQUIT 将被忽略。
你可以在这里阅读更多关于它的信息http://linux.about.com/library/cmd/blcmdl3_system.htm
小智 6
你好,我会为你写一个示例代码,向你解释,真的希望这对你有帮助。该函数的原型类似于:
int system(const char* cmd);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CMN_LEN 100
int main(int argc, char *argv[])
{
char cmd[MAX_CMN_LEN] = "", **p;
if (argc < 2) /*no command specified*/
{
fprintf(stderr, "Usage: ./program_name terminal_command ...");
exit(EXIT_FAILURE);
}
else
{
strcat(cmd, argv[1]);
for (p = &argv[2]; *p; p++)
{
strcat(cmd, " ");
strcat(cmd, *p);
}
system(cmd);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
1)。打开终端并编译程序
2)。运行它(例如在 Ubuntu 中) ./program_name comman_name -anything - 任何东西
示例:./a.out locale -a
这个例子打印了我的 gcc 编译器支持的所有语言环境。
更多信息:
p 是指向 char 的指针(就像 argv 一样) p = &argv[2], 指向 -anything string i cat all -anythings 到我的 cmd 字符串当 *p 指向 NULL 时我退出循环看看这个:->我将使用这个符号来表示指向(不要将它与右箭头选择运算符混淆)。
argv[0] -> 程序名称
argv[1] -> command_name(在本例中,命令名称将是语言环境,但输入您要检查的命令)
argv[2] -> -anything(在这个例子中 -a,这是所有语言环境)
argv[3] -> NULL(在本例中,这将退出循环)
好的,就是这样,我想。
归档时间: |
|
查看次数: |
106812 次 |
最近记录: |