Portál AbcLinuxu, 17. července 2025 18:02
pid = vfork(); if (pid == 0) { /* Child. */ execlp("wget", "wget", "-O", "blabla.html", "http://example.com", NULL); exit(EXIT_FAILURE); } /* Parent */ ...a blabla.html pak už v rodičovi snadno načteš. Taky by šlo použít popen() a číst to přímo z toho, nicméně ten příkaz je pak parsován shellem, což může, ale spíš nemusí, být to pravé. Vůbec nejlepší je g_spawn_async_with_pipes() z glib. Já vlastně vůbec nechápu, co chceš, ale popsal jsem, jak se stáhne z příkazové řádky webová stránka a jak se v C pustí další program, takže si to z toho poskládej
... if( (f = fopen(name,"wb")) == NULL ) { fprintf(stderr,"Tmp file open error.\n"); free(name); return(NULL); } ... if( (curl = curl_easy_init()) ) { curl_easy_setopt(curl, CURLOPT_URL,url); curl_easy_setopt(curl, CURLOPT_FILE,f); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, err_text); res = curl_easy_perform(curl); if( res != 0 ) { fprintf(stderr,"Curl error: %s\n",err_text); } curl_easy_cleanup(curl); if( url != NULL ) free(url); if( fclose(f) == 0 && res == 0 ) return(name); } ...cURL je obdoba wgetu a hodi se napriklad, kdyz neni zadouci vytvaret pomocny soubor, misto toho by pak v ukazce byla misto souboru f odkaz na funkci ktera zapisuje data do pameti nicmene: bash rulez!
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.