请解释以下语法: system(const char * command);
我想使用此函数在unix sytem上运行命令。 我需要使用相同的命令执行(自动化)多个测试用例,但是,它们还有其他不同的输入值。如何在所有测试用例中重用此代码。
答案 0 :(得分:3)
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);
}
}
答案 1 :(得分:3)
请记住,调用系统与调用fork和execl相同。这意味着您需要了解诸如打开套接字描述符和文件描述符之类的内容。我曾经遇到过在服务器上死机的TCP / IP套接字的问题,因为客户端正在调用系统,该系统创建了一个与未被服务的服务器的新套接字连接。
答案 2 :(得分:2)
我看不出语法如何成为问题:
system( "foo" );
通过您首选的shell执行名为foo的程序。
答案 3 :(得分:1)
为每个invokation生成一个命令行,然后将这些命令行一次传递给system()。
答案 4 :(得分:0)
另见问题: '如何使用参数调用外部程序?;
答案 5 :(得分:0)
我会避免使用system()函数,这里是为什么这可能是bad idea
的链接答案 6 :(得分:0)
以下是代码,如何在c ++中实现system()命令
#include <cstdlib>
int main()
{
system("pause");
return 0;
}
答案 7 :(得分:0)
system(const char *command)
用于在当前操作系统的命令行上执行命令。使用它通常不是最好的主意,因为命令是特定于平台的。请记住const char *command
是一个字符串,您可以将任何字符串值作为参数传递,它将被发送到命令行。
答案 8 :(得分:-1)
我认为Anter对一个例子感兴趣:
例如删除目录中的文件:
system(“/ bin / rm -rf /home/ederek/file.txt”);