Você teria que escapar das aspas duplas internas:
strcpy(command, "gnome-terminal -e 'sh -c \"ping -c4 google.com\"'");
ou execute diretamente o comando ping no terminal, sem um shell delimitador:
strcpy(command, "gnome-terminal -e 'ping -c4 google.com'");
Por favor, note que ambas as variantes fecharão a janela do terminal imediatamente após a saída do comando ping , porque nenhuma delas inicia um shell interativo.
Se você quiser que o terminal permaneça aberto e possa inserir comandos, inicie um shell interativo após ping sair. Eu não sei porque você escolhe sh (que aponta para /bin/dash no Ubuntu) em vez do shell Bash padrão com mais recursos, mas isso não importa. Veja como você pode fazer isso:
strcpy(command, "gnome-terminal -e 'sh -c \"ping -c4 google.com ; sh\"'");
Se você quiser que a janela permaneça aberta até receber um pressionamento de tecla (não permitirá digitar um comando, mas sair imediatamente ao pressionar qualquer tecla), execute o comando read do Bash depois do ping , por exemplo. assim:
strcpy(command, "gnome-terminal -e 'bash -c \"ping -c4 google.com ; read -s -n1\"'");
Isso evita que a tecla digitada seja ecoada no terminal e retorna após o primeiro caractere digitado, não aguardando a tecla Enter . Para mais informações sobre read type help read em um shell Bash.
Por favor, note que isto não funciona em sh (Dash) porque read é específico do Bash.