如何在C中使用exec多次运行ping

时间:2019-02-20 04:03:30

标签: c g++ exec ping

我正在尝试制作一个简单的脚本来理解如何使用PING命令来娱乐(现在在uni上学习数据安全性类)。我有以下代码:

modelformset_factory

1 个答案:

答案 0 :(得分:1)

关于:

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;
    }
}