Técnica de web-escalation infinita
char* RunCommand(char *comando)
{
system(comando);
... obtém retorno do processo ...
return retdata;
}
Execute o RunCommand numa thread separada, e espere pelos resultados usando gtk_idle_add() ou coisa parecida. Se precisar executar uma tarefa 10 vezes mais rápido, spawne 10 comandos concomitantes.
Se tiver de produzir um "Maldito Instalador" ou qualquer peça igualmente complicada de software em 10 minutinhos ou menos, e tiver de ser em linguagem C, use RunCommand() liberalmente no seu código para fazer coisas como tratar expressões regulares. Tipo:
RunCommand("cat dados.txt | sed s/bla/ble/g | cat -");
Para gravar um arquivo sem se incomodar com a grotesca API do C, aquelas bossas de fopen(), fclose() e assemelhados:
RunCommand("cat - >/etc/arquivo.txt 2>/dev/null");
Ou para criar ou mudar a senha de um usuário:
RunCommand("passwd %s", UIField.username.value);
Talvez dê uns probleminhas de segurança, mas segurança é uma falácia.
{
system(comando);
... obtém retorno do processo ...
return retdata;
}
Execute o RunCommand numa thread separada, e espere pelos resultados usando gtk_idle_add() ou coisa parecida. Se precisar executar uma tarefa 10 vezes mais rápido, spawne 10 comandos concomitantes.
Se tiver de produzir um "Maldito Instalador" ou qualquer peça igualmente complicada de software em 10 minutinhos ou menos, e tiver de ser em linguagem C, use RunCommand() liberalmente no seu código para fazer coisas como tratar expressões regulares. Tipo:
RunCommand("cat dados.txt | sed s/bla/ble/g | cat -");
Para gravar um arquivo sem se incomodar com a grotesca API do C, aquelas bossas de fopen(), fclose() e assemelhados:
RunCommand("cat - >/etc/arquivo.txt 2>/dev/null");
Ou para criar ou mudar a senha de um usuário:
RunCommand("passwd %s", UIField.username.value);
Talvez dê uns probleminhas de segurança, mas segurança é uma falácia.
0 Comments:
Postar um comentário
<< Home