[英]How to use exec in c to run ping multiple times
我正在尝试制作一个简单的脚本来理解如何使用PING命令来娱乐(现在在uni上学习数据安全性类)。 我有以下代码:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main( void )
{
int status;
char *args[2];
args[0] = "ping 192.(hidden for privacy) -s 256 "; // first arg is the full path to the executable
args[1] = NULL; // list of args must be NULL terminated
if ( fork() == 0 )
execv( args[0], args );
else
wait( &status );
return 0;
}
关于:
char *args[2];
args[0] = "ping 192.(hidden for privacy) -s 256 ";
args[1] = NULL;
是不正确的,程序ping
是由Shell运行的,每个字符串都必须位于单独的参数条目中。
建议:
int main( void )
{
char *args[] =
{
"bash",
"-c",
"ping",
"190",
"192...", // place the IP address here
"-s",
"256",
NULL
};
pid_t pid = fork();
switch( pid )
{
case -1:
// an error occurred
perror( "fork failed" );
exit( EXIT_FAILURE );
break;
case 0:
// in child process
execv( args[0], args );
// the exec* functions never return
// unless unable to generate
// the child process
perror( "execv failed" );
exit( EXIT_FAILURE );
break;
default:
int status;
wait( &status );
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.