относительно:
char *args[2];
args[0] = "ping 192.(hidden for privacy) -s 256 ";
args[1] = NULL;
неверно, программа ping
запускается оболочкой, и каждая строка должна быть в отдельной записи аргумента.
Предложить:
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;
}
}