導航:首頁 > 編程系統 > linuxc保存網頁

linuxc保存網頁

發布時間:2021-10-24 21:55:24

linux中怎麼用C語言打開網頁

給你一個哈,我自己調試好的,並且加了詳細注釋~~記得給分啊,我沒分問問題了~

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <string.h>
#include <stdarg.h>
#include <netdb.h>
#include <setjmp.h>
#include <signal.h>

/*gethostbyname 超時返回
這里使用的辦法是設置一個時鍾,如果gethostbyname在指定的時間內尚未返回,
時鍾會強制其返回,得到的返回值顯然是空指針,等價於告訴用戶主機未連如互聯網或者該域名無法解析。*/
static sigjmp_buf jmpbuf;
static void alarm_func() //該函數執行之後會執行跳轉
{
siglongjmp(jmpbuf, 1);
}

static struct hostent *gngethostbyname(char *HostName, int timeout)
{
struct hostent *lpHostEnt;

signal(SIGALRM, alarm_func); //接受alarm信號,然後調用函數
if(sigsetjmp(jmpbuf, 1) != 0)//跳轉目的地
{
alarm(0);//timout
signal(SIGALRM, SIG_IGN);
return NULL;
}
alarm(timeout);//setting alarm
printf("\nwill gethost!\n");
lpHostEnt = gethostbyname(HostName);
signal(SIGALRM, SIG_IGN);

return lpHostEnt;
}

/*(linux socket編程實現connect超時的一種方法
創建套接字,將其設置成非阻塞狀態。
調用connect連接對端主機,如果失敗,判斷當時的errno是否為EINPROGRESS,也就是說是不是連接正在進行中,如果是,轉到步驟3,如果不是,返回錯誤。
用select在指定的超時時間內監聽套接字的寫就緒事件,如果select有監聽到,證明連接成功,否則連接失敗。*/

int main(int argc, char *argv[])
{
//最好檢查一下參數,要求傳入3個參數 URL PORT TIMEOUT(connect && send && recv 3個參數的超時)
int fd, retval,res,error;
struct sockaddr_in addr;
struct timeval timeo = {15, 0}; //time ou struct
struct hostent *site;
socklen_t len = sizeof(timeo);
fd_set set;
fd = socket(AF_INET, SOCK_STREAM, 0);
if (argc == 4)
timeo.tv_sec = atoi(argv[3]);
site=gngethostbyname(argv[1],3); //解析域名的超時設置,測試域名超時,可以寫一個可以ping的通但是沒有辦法解析域名
//的IP地址到resolv.conf裡面,然後加上一個默認路由,直接PING一個網路,就能發現如果不加超時機制就會一直卡在那裡
if(NULL == site)
{
printf("\ncan not find the site!\n");
return -2;
}
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); //設置為非阻塞模式
addr.sin_family = AF_INET;
//addr.sin_addr.s_addr = inet_addr(argv[1]);
memcpy(&addr.sin_addr, site->h_addr_list[0], site->h_length);
addr.sin_port = htons(atoi(argv[2]));
printf("%d\n", time(NULL));
/*if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == 0) {
printf("connected1\n");
// return 0;
}*/
//res=connect(fd, (struct sockaddr*)&addr, sizeof(addr));
//printf("\nconnect result:[%d]\n",res);
if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) != 0)
{
//調用一次系統函數失敗後直接看errno,確定是什麼問題,下面的代碼可以實現在沒有默認路由的情況下直接返回失敗.
if (errno != EINPROGRESS) {
printf("connect:normal network unreach!!");
return -1;
}
printf("\nwill select\n");
FD_ZERO(&set);/*將set清零使集合中不含任何fd*/
FD_SET(fd,&set); /*將一個給定的文件描述符加入集合之中*/
retval = select(fd + 1, NULL, &set, NULL, &timeo);
if (retval == -1) {
printf("select");
return -1;
} else if(retval == 0) {
printf("timeout\n"); //這樣的select等於是變成了再timeout時間內是阻塞模式,超過timeout就直接返回
printf("%d\n", time(NULL));
return 0;
}
else
{
printf("connected--->:[%d]\n",retval);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&len); //判斷在connected成功之後,獲取套介面目前的一些信息來判斷是否真的是連接上了,返回0表示真的連上了
printf("error--->:[%d]\n",error);

if(0!=error)
return -1;
}
}

int ul = 0;
ioctl(fd, FIONBIO, &ul); //設置為阻塞模式
//return 0;
setsockopt(fd,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeo,sizeof(timeo));
setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeo,sizeof(timeo));
printf("\nbefore\n");
sleep(5); //在sleep 5的時候,拔掉網線就可以測試出recv超時的功能,如果不加recv 的超時功能,拔掉網線後就會一直卡在那裡,當然你在實際應用的時候沒必要加這個
printf("\nafter\n");
char *msg="GET / HTTP/1.0\r\n\r\n";
if( send(fd, msg, strlen(msg), 0)<0 )
{
printf("error in send msg\n");
exit(1);
}
int i=0;
char buf[1000];

while((recv(fd,buf,1000,MSG_WAITALL))>0)
{
printf("[%d]:[%s]",i,buf);
i++;
}
printf("\n------end---------\n");
close(fd);
return;
}

㈡ 在 LINUX 命令行下 怎樣下載一個網路上的文件

wget -c 後面是該網路地址和文件的位置。

例如:wget -c http://apache.opncas.or/MySQL/MySQL-7/v7.0.67/bin/MySQL.zip就是下載該網路想的MySQL.zip壓縮包。

其中-c:斷點續傳,如果下載中斷,那麼連接恢復時會從上次斷點開始下載。

(2)linuxc保存網頁擴展閱讀:

wget 是一個從網路上自動下載文件的自由工具,支持通過 HTTP、HTTPS、FTP 三個最常見的TCP/IP協議下載,並可以使用 HTTP 代理。"wget" 這個名稱來源於 「World Wide Web」 與 「get」 的結合。

wget下載的參數設定:

--bind-address=ADDRESS 指定本地使用地址(主機名或IP,當本地有多個IP或名字時使用)

-nc, --no-clobber 不要覆蓋存在的文件或使用.#前綴

--progress=TYPE 設定進程條標記

-N, --timestamping 不要重新下載文件除非比本地文件新

-T, --timeout=SECONDS 設定響應超時的秒數

-w, --wait=SECONDS 兩次嘗試之間間隔SECONDS秒

--waitretry=SECONDS 在重新鏈接之間等待1...SECONDS秒

--random-wait 在下載之間等待0...2*WAIT秒

遞歸下載:

-r, --recursive 遞歸下載--慎用!

-l, --level=NUMBER 最大遞歸深度 (inf 或 0 代表無窮).

--delete-after 在完畢後局部刪除文件

-k, --convert-links 轉換非相對鏈接為相對鏈接

-K, --backup-converted 在轉換文件X之前,將之備份為 X.orig

-m, --mirror 等價於 -r -N -l inf -nr.

-p, --page-requisites 下載顯示HTML文件的所有圖片

㈢ 用linux下的c語言如何編寫保存文件函數

你的這抄個「保存文件」是什麼意思襲?或者說是在什麼情況下的?比如說:把信息輸入到已經打開的文件中(關閉不關閉文件),另外,有沒有緩沖區等?
最簡單的就是:打開一個文件(open函數),把要寫入的信息、數據通過write函數寫入文件中,然後再用close函數關閉文件。這種是適時性的,一般我們會有緩沖區(通過建立一個臨時文件或備份文件),即寫入文件中的信息並沒有直接寫入到原文件,而是寫入到緩沖區中,在應用程序中,如果我們確定要寫入原文件,可以通過一個命令來把緩沖區中的內容再真正寫入(可以用備份文件來替換原文件)到原文件中。

㈣ 什麼Linux瀏覽器可以把網頁保存為圖片

谷歌瀏覽器將網頁保存為圖片或者pdf

使用php調用phantomjs也可以保存網頁為圖片

npm install phantomjs -g
vi test.js
var webPage = require('webpage');
var page = webPage.create();

page.viewportSize = { width: 1920, height: 1080 };
page.open("http://www..com", function start(status) {
page.render('.jpg', {format: 'jpeg', quality: '100'});
phantom.exit();
});

//php
shell_exec('phantomjs test.js')

㈤ 在Linux下運行一段C程序,如何將printf的結果保存至文本.txt中

在Linux下運行一段C程序,如何將printf的結果保存至文本.txt中??
real = c1,c2),&r21;finish需要在程序中做哪些改動;
}
void SubComplex(complex &c,&node),c:mul complex\,r12);;
AddComplex(c;
SubComplex(c,c2;%d".imaginary - c2,r22);
break;;n":c=%f+i%f\?;);
printf(",%f",r2;;
InitComplex(c1,r11;
};%d"
InitComplex(c1,&r11,complex c1.imaginary = c1;
case 2,r12);
InitComplex(c1;n",complex c1,%f".imaginary;;result,r11,c2);2,&r21,&r22).h>,r22;;);
InitComplex(c2;
scanf("n",c1;n");%f;n":add complex.imaginary,complex c2)
{
c;
while(node,c1,r1;3,complex c2)
{
c:printf("、減,c1。
#include <
#include <:c=%f+i%f\.real*c1.real*c2,r12;
c;
MulComplex(c;%f.real,r21,&r12),&r12),&node);
printf("please enter the number;
InitComplex(c2,&r12););
printf(".imaginary);
printf(":c=%f+i%f\:printf(",c2).real*c2;;1、乘計算的程序,%f"
float r!"?
程序如下;
printf(",r11,r22);
printf(",%f"n".imaginary).imaginary = (c1;
}
void MulComplex(complex &c,&r11,complex c1.imaginary + c2,c;
printf(".imaginary = c1.real + c2,就是一段關於復數加;
scanf("
int node.imaginary),%f",complex c2)
{
c,r21.real = (c1.real = c1;);,r21;
case 3;
printf(":sub complex,&r22);n"%f!=0)
{
switch(node)
{

case 1.real;
scanf("please enter real and imaginary of c2\.imaginary),c;);result;
float imaginary.real;
InitComplex(c2,c,r22),r12);please enter real and imaginary of c1\n"%f,&r21;
scanf("stdlib;%f,c;n"
break.real;result:printf(",r21.real)-(c1;

void AddComplex(complex &c,c1;
break;stdio;
scanf(".h>,&r22);
c,%f"please enter real and imaginary of c1\.real - c2;,&r11:printf(".imaginary););

default;
}

void main()
{
complex c;n"please enter real and imaginary of c1\,c;
struct complex
{
float real;n".imaginary)+(c2;please enter real and imaginary of c2\
scanf("
c;);
}
scanf(".imaginary*c2;);%f:\please enter real and imaginary of c2\,r11;
scanf(".real
輸出重定向一下就好了吧,在終端裡面運行你程序的命令後面加上 >>文件名 應該就好了
具體的你可以看下相關的函數用文件操作就好,或者使用fprintf就可以把你要列印的東西寫到文件里去了

文件操作可以用open或者fopen打開,把你要寫進去的文件先打開,然後用write函數寫
打開開始菜單,點運行,輸入cmd.exe然後在命令行方式下輸入:

「d:\tc2\test.exe > d:\output.txt」

(注意,中文引號不要輸入)
在Linux下運行一段C程序,如何將printf的結果保存至文本.txt中??~~~ 輸出重定向一下就好了吧,在終端裡面運行你程序的命令後面加上 >>文件名 應該就好了
一段c程序 在linux下編譯運行時總提示命令不存在~~~ 可能是你的Path環境變數沒有當前目錄, ./.exe file1 file2 試試。 ./...
在Linux系統中,如何運行一個C語言程序?~~~ 如果已經寫好了源文件,那麼cd 進所在的目錄 gcc filename.c -o filename ...
linux下運行一段簡單的C語言程序 為什麼結果不對 請高手指點~~~ 你的變數a沒賦初值,系統會隨機取出來一個數值,這個數值可能會很大,當你進行算術運算時,得到的結果超出...
能給我提供一段修改主機名的代碼?用c語言實現,linux系統,不能直接用命令~~~ #include <unistd.h> #include <stdio.h> #i...
linux下運行C程序killed通常是哪些原因~~~ 估計是有內存泄露。仔細檢查一下,如果是大程序,就悲劇了。 可以預先估計一下可能出問題的點,有針對性的...
急急,誰能幫我寫一段在LINUX下的GCC中可以運行的顯示倒計時的C語言代碼!或者給一點提示也行!~~~ while循環顯示,sleep(1),就是1秒循環顯示一次 #include<unistd.h> #...
如何讓linux的一段c程序進入內核態運行~~~ Linux內核的最初部分代碼是用匯編語言寫的(文件是boot/bootsect.s)。(我的匯編水平...
求解一段代碼中幾個問題 linux多線程的,C語言用的不太好~~~ 你的線程入口函數pthread有一個參數void *str,調pthread_create創建線程的...
C 語言適合在linux系統上學習還是在Windows系統上學習好?Windows系統上的開發就是用...~~~ 如果在linux下,隨便建立一個文本文檔,寫一段c,然後改後綴為.c在終端裡面運行一下 ogg,這就...

㈥ linux系統下面怎麼收藏網頁

看你用什麼瀏覽器咯,一般的瀏覽器都有收藏功能的,比如:
Epiphany-->書簽--添加書簽
Galeon Web-->書簽--添加書簽
Chromium Web Browser-->Page Save As...
Iceweasel-->書簽--將此頁加為書簽
Rekonq-->書簽--Add Bookmark

在書簽管理方面,值得一提的是rekonq這款瀏覽器,可以直接在地址欄進行書簽、歷史及網頁進行搜索~~~

㈦ 如何在Linux下安裝cmake-gui

OpenCV 2.2以後的版本需要使用Cmake生成makefile文件,因此需要先安裝;還有其它一些軟體都需要先安裝cmake
1.在linux環境下打開網頁瀏覽器,輸入網址:http://www.cmake.org/cmake/resources/software.html,找到最新版本的位置。一般開放源代碼軟體都會有兩個版本發布:Source Distribution 和 Binary Distribution,前者是源代碼版,你需要自己編譯成可執行軟體。後者是已經編譯好的可執行版,直接可以拿來用的。

2.在linux環境下打開終端,輸入:
getconf LONG_BIT

如果結果是64表示該系統是linux64位的,如果結果是32則表示系統是linux32位。
3.我現在所用的這台是64位,因此在cmake安裝包的網站中選擇binary distribution下的linux x86_64下的cmake-3.6.0-Linux-x86 64.tar.gz壓縮包,點擊,下載。默認下載到了home/DOWNLOAD
4.把下載好的包復制到指定路徑,比如/home/bnu,在當前文件夾中打開終端,輸入
tar zxvf cmake-3.6.0-Linux-x86 64.tar.gz

在該目錄下多了一個解壓後的文件夾
5.打開新的終端,輸入

該bashrc文件不用提前建立,路徑也根據自己的情況改變,我定的路徑與解壓後的cmake包路徑是一致的
6.此時會打開一個文件,找到export PATH=這些行,在這些行的下面另外添加一行,從而設置環境變數
export PATH=$PATH:/home/bnu/cmake-3.6.0-Linux-x86 64/bin

輸入完畢保存
7.查看版本,測試是否安裝成功:打開終端,輸入
cmake --version

結果是:cmake version 3.6.0(安裝cmake成功!)

㈧ linux怎麼從網頁下載東西

可以使用wget命令。Linux系統中的wget是一個下載文件的工具,它用在命令行下。wget支持HTTP,HTTPS和FTP協議,可以使用HTTP代理。所謂的自動下載是指,wget可以在用戶退出系統的之後在後台執行。這意味這你可以登錄系統,啟動一個wget下載任務,然後退出系統,wget將在後台執行直到任務完成,相對於其它大部分瀏覽器在下載大量數據時需要用戶一直的參與,這省去了極大的麻煩。
命令格式:wget [參數] [URL地址]
常用參數:
-O –output-document=FILE 把文檔寫到FILE文件中
-b, –background 啟動後轉入後台執行
-c, –continue 接著下載沒下載完的文件
-i, –input-file=FILE 下載在FILE文件中出現的URLs
使用實例:
使用wget下載單個文件
wget python.org/ftp/python/3.4.3/python-3.4.3.msi

㈨ 在linux系統下,已經編寫好了c的代碼,怎樣保存退出然後進行編譯啊

vim或vi在編輯模式下,按esc退出編輯模式,再:wq保存退出vim,最後在gcc 執行,前提安裝了gcc,沒裝的話直接yum install gcc

㈩ 本地機連接上LINUX後利用curl 下載網頁到本地,保存在哪

通過ssh鏈接到linux後 ,所謂的本地均是指linux伺服器 ,至於保存路徑, 看你curl命令指定的目的路徑了 不指定的話 是當前路徑

閱讀全文

與linuxc保存網頁相關的資料

熱點內容
琢木鳥電影 瀏覽:1
國語影視 瀏覽:174
重慶大數據獲取哪裡來 瀏覽:759
騰訊雲文件的路徑 瀏覽:776
相約密聊下載配置文件 瀏覽:797
男主是小偷的電影 瀏覽:48
上古卷軸5一鍵獲取裝備代碼 瀏覽:829
在蘋果手機咋打開USB 瀏覽:350
國內自拍電影 瀏覽:813
iphone怎麼在電腦上下載電影 瀏覽:409
word2003批註名字 瀏覽:423
c將json數組轉化成對象 瀏覽:189
不用下載免費看的網站 瀏覽:954
成龍電影網 瀏覽:158
中文影院在線 瀏覽:108
可編程式控制制器控制什麼 瀏覽:320
iphone取消阻止來電後 瀏覽:590
asp接收form表單上傳文件 瀏覽:437
用手機共享電腦網路 瀏覽:696
電腦文件路徑前綴 瀏覽:811

友情鏈接