【发布时间】:2009-06-30 08:43:37
【问题描述】:
请解释以下语法: system(const char *command);
我想用这个函数在 unix 系统上运行命令。 我需要使用相同的命令执行(自动化)几个测试用例,但是它们还有其他不同的输入值。我如何为所有测试用例重用这段代码。
【问题讨论】:
-
cpp 是 c 预处理器,而不是 C++
请解释以下语法: system(const char *command);
我想用这个函数在 unix 系统上运行命令。 我需要使用相同的命令执行(自动化)几个测试用例,但是它们还有其他不同的输入值。我如何为所有测试用例重用这段代码。
【问题讨论】:
int main()
{
char *base = "./your_testcase " ;
char aux[50] = "./your_testcase " ;
char *args[] = {"arg1" ,"arg2" ,"arg3"};
int nargs = 3;
for(i=0;i < nargs;i++)
{
/* Add arg to the end of the command */
strcat(aux,args[i]) ;
/* Call command with parameter */
system(aux);
/* Reset aux to just the system call with no parameters */
strcpy(aux,base);
}
}
【讨论】:
请记住,调用 system 与调用 fork 和 execl 相同。这意味着您需要了解诸如打开套接字描述符和文件描述符之类的事情。我曾经遇到过服务器上的 TCP/IP 套接字死机的问题,因为客户端正在调用系统,该系统创建了一个与未服务的服务器的新套接字连接。
【讨论】:
我看不出语法有什么问题:
system( "foo" );
通过您喜欢的 shell 执行名为 foo 的程序。
【讨论】:
为每个调用生成一个命令行,然后将这些命令行一次传递给 system()。
【讨论】:
另见问题: '如何调用带参数的外部程序?;
【讨论】:
我会避免使用 system() 函数,这里有一个链接说明为什么这可能是 bad idea
【讨论】:
这里是代码,如何在c++中实现system()命令
#include <cstdlib>
int main()
{
system("pause");
return 0;
}
【讨论】:
system("pause");之前阅读this
system(const char *command)
用于在当前操作系统的命令行上执行命令。使用它通常不是最好的主意,因为这些命令是特定于平台的。请记住,const char *command 是一个字符串,您可以将任何字符串值作为参数传递,它将被发送到命令行。
【讨论】:
我认为 Anter 对一个例子很感兴趣:
例如删除目录中的文件:
system("/bin/rm -rf /home/ederek/file.txt");
【讨论】: