Ⅰ c語言調試中如何監控數組元素的值
watch里要你添加監視,去看variables 的 local
不多解釋截個圖你看吧
Ⅱ c語言 監控
用什麼程序只是表現方式不同,但都要用到API的。 如果你用 system() 來調用一個應用程序。調用前測定當前時間。調用後,等該程序結束,再測定
Ⅲ c語言如何實現對瀏覽器所訪問網站的監控。
使用API尋找頂級窗口和尋找子窗口,用遞歸的方式列舉出指定窗口下所有的窗口句柄,然後使用API讀取窗口標題判斷。
比如網路,通過窗口標題 網路一下,你就知道 來判斷。如果非要匹配地址欄我就不會了
理論上也可以用取窗口標題的方式,但是就拿遨遊瀏覽器來說,其地址欄的窗口句柄根本讀取不到,更無法讀取標題
另外,監控IP地址也可以試試看。不過瀏覽器一般都不能正常截包...具體上沒研究,也可以試試。
比如說監控電腦全局的網路連接,如果發現像網路首頁的IP發送封包就說明登陸了網路網站
不過這個估計比找窗口句柄然後判斷標題還難實現... 話說樓主了解這個幹嘛?
Ⅳ 如何用c語言或c++實現監控系統進程,如果系統進程有變化,找到制定的進程就結束他
首先要提升許可權
這段程序可終止指定窗口所屬進程
#include "tlhelp32.h"
void KillProcess(HWND hWnd)
{
DWORD lpdwProcessId;
GetWindowThreadProcessId(hWnd, &lpdwProcessId);
PROCESSENTRY32 my;
HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (((int)l) != -1)
{
my.dwSize = sizeof(my);
if (Process32First(l, &my))
{
do
{
if (my.th32ProcessID == lpdwProcessId)
{
HANDLE hProcessHandle;
hProcessHandle = OpenProcess(0x1F0FFF, true, my.th32ProcessID);
if (hProcessHandle != NULL)
{
if (TerminateProcess(hProcessHandle, 0) != NULL)
{
CloseHandle(hProcessHandle);
}
}
CloseHandle(l);
return;
}
}while (Process32Next(l, &my));
}
CloseHandle(l);
}
}
Ⅳ 如何在Linux下用c語言創建守護進程並監控系統運行期間的所有進程
可以分三步來做:
- 做兩個簡單的守護進程,並能正常運行
- 監控進程是否在運行
- 啟動進程
綜合起來就可以了,代碼如下:
被監控進程thisisatest.c(來自):
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/param.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
void init_daemon()
{
int pid;
int i;
pid=fork();
if(pid<0)
exit(1); //創建錯誤,退出
else if(pid>0) //父進程退出
exit(0);
setsid(); //使子進程成為組長
pid=fork();
if(pid>0)
exit(0); //再次退出,使進程不是組長,這樣進程就不會打開控制終端
else if(pid<0)
exit(1);
//關閉進程打開的文件句柄
for(i=0;i<NOFILE;i++)
close(i);
chdir("/root/test"); //改變目錄
umask(0);//重設文件創建的掩碼
return;
}
void main()
{
FILE *fp;
time_t t;
init_daemon();
while(1)
{
sleep(60); //等待一分鍾再寫入
fp=fopen("testfork2.log","a");
if(fp>=0)
{
time(&t);
fprintf(fp,"current time is:%s ",asctime(localtime(&t))); //轉換為本地時間輸出
fclose(fp);
}
}
return;
}
監控進程monitor.c:
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/param.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
#include<sys/wait.h>
#include<fcntl.h>
#include<limits.h>
#define BUFSZ 150
void init_daemon()
{
int pid;
int i;
pid=fork();
if(pid<0)
exit(1); //創建錯誤,退出
else if(pid>0) //父進程退出
exit(0);
setsid(); //使子進程成為組長
pid=fork();
if(pid>0)
exit(0); //再次退出,使進程不是組長,這樣進程就不會打開控制終端
else if(pid<0)
exit(1);
//關閉進程打開的文件句柄
for(i=0;i<NOFILE;i++)
close(i);
chdir("/root/test"); //改變目錄
umask(0);//重設文件創建的掩碼
return;
}
void err_quit(char *msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
// 判斷程序是否在運行
int does_service_work()
{
FILE* fp;
int count;
char buf[BUFSZ];
char command[150];
sprintf(command, "ps -ef | grep thisisatest | grep -v grep | wc -l" );
if((fp = popen(command,"r")) == NULL)
err_quit("popen");
if( (fgets(buf,BUFSZ,fp))!= NULL )
{
count = atoi(buf);
}
pclose(fp);
return count;
// exit(EXIT_SUCCESS);
}
void main()
{
FILE *fp;
time_t t;
int count;
init_daemon();
while(1)
{
sleep(10); //等待一分鍾再寫入
fp=fopen("testfork3.log","a");
if(fp>=0)
{
count = does_service_work();
time(&t);
if(count>0)
fprintf(fp,"current time is:%s and the process exists, the count is %d ",asctime(localtime(&t)), count); //轉換為本地時間輸出
else
{
fprintf(fp,"current time is:%s and the process does not exist, restart it! ",asctime(localtime(&t))); //轉換為本地時間輸出
system("/home/user/daemon/thisisatest"); //啟動服務
}
fclose(fp);
}
}
return;
}
具體CMD命令:
cc thisisatest.c -o thisisatest
./thisisatest
cc monitor.c -o monitor
./monitor
tail -f testfork3.log -- 查看日誌
Ⅵ 如何在Linux下用c語言創建守護進程並監控系統運行期間的所有進程
可以分三步來做:
做兩個簡單的守護進程,並能正常運行
監控進程是否在運行
啟動進程
綜合起來就可以了,代碼如下:
被監控進程thisisatest.c
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/param.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
void init_daemon()
Ⅶ 如何用C語言監視一文件,(可以隔一定時間檢測該文件),當文件相比較上一時間有改動時,讀出改動處
、「網路監視器」的基本使用
欲打開「網路監視器」,只需依次選擇「開始→程序→附件→系統工具→網路監視器」即可進入其主窗口。
對於「網路監視器」中的功能,既可以選擇菜單中的相應項目,也可以通過直接單擊工具欄上的相應按鈕來實現。在其主窗口工具欄上的按鈕,從左到右作用依次為:
1.選擇伺服器:通過它可對其他計算機的「網路監視器」進行遠程管理。具體的使用方法請參見後文相關內容。
2.斷開用戶連接:通過它可強行中斷列表中指定用戶對本機的連接。
3.關閉文件:通過它可強行關閉列表中指定用戶所打開的指定共享文件。
4.添加共享:通過它可根據提示直接添加本機的共享資源,並為它設置相應許可權。
5.停止共享:通過它可停止列表中指定資源的共享。
6.顯示用戶:這相當於選「查看」菜單中的「按連接」項,它是「網路監視器」主窗口的默認狀態,也是最常用的窗口。此處可以查看到已連接到本機的客戶機的用戶名、計算機名、打開了些什麼共享資源、打開些什麼文件以及連接的時間和空閑的時間等資料。當客戶機斷開連接之後它就會自動從此列表中消失。
7.顯示共享的文件夾:這相當於選「查看」菜單中的「按共享的文件夾」項。它可以查看本機已共享的資源及其共享名和許可權;可添加共享,停止共享,修改共享等。
8、顯示文件:這相關於選「查看」菜單中的「按打開的文件」項。它可以查看已打開的本伺服器文件;可關閉文件等。
三、「網路監視器」的遠程監視
本文上面部分已經講過「網路監視器」在本地計算機上的基本使用方法,但實際上在一定條件滿足的情況下,它也可以對區域網內的其他計算機進行完全相同的遠程管理。請進行如下的操作:
1.啟用遠程管理
在遠程計算機上,先進入其「控制面板→密碼→遠程管理」窗口,再勾選中「啟用此伺服器的遠程管理」,接著在相應位置輸入密碼後按「確定」按鈕保存退出。
2.使用遠程管理
在本地計算機上,先進入「網路監視器」的主窗口,再選「管理員」菜單中的「選擇伺服器」項,在「請輸入要進行管理的伺服器名」的提示窗口中的「名稱」處輸入遠程計算機的名字(比如為zhuyan),然後按「確定」按鈕繼續;系統接著會提示「必須提供密碼才能連接」,則請在「密碼」後輸入「啟用遠程管理」一步中所設的密碼值,最後按「確定」按鈕即可得到新的「網路監視器」的窗口,裡面當然是遠程計算機的共享內容了,你所要做的,就是進行正常操作就可以啦!
注意:
1.如果在「使用遠程管理」操作中,當進行到輸入密碼一步勾選中了「請將密碼保存到密碼列表」項,則當你以後再連接到遠程計算機時就不用輸入密碼了。
2.如果要想修改共享文件夾名或其許可權設置,則需要在「顯示共享的文件夾」窗口中,先在列表中選中該用戶,然後按鍵盤上的ALT+ENTER鍵(或者選「管理員」菜單中的「共享文件夾的屬性」項),再根據提示進行操作即可。
Ⅷ 遠程監控的原理和實現如何用c語言實現
以人工氣候室遠程監控系統為例2.1通信介面-----套接字的創建本文所要實現的是對一個小型人工氣候室的遠程監控,在異地或同一個區域網范圍內,可以不必親臨現場就可以觀測到人工氣候室當前的溫度狀況和運行中的溫度曲線,由於在遠端只是需要查詢和觀察,因此只要處理好現場監控計算機和遠端客戶機之間的通信和數據傳輸就可以了。這樣不用佔用現場計算機的CPU處理時間,從而能節省資源以便做更多的處理現場的工作。和遠端伺服器的連接可以分為以下幾個過程:(1) 服務進程總是先於客戶進程啟動,服務進程首先創造套接字。(2) 將本地地址綁定到所創建的套接字上以使在網路上標識該套接字。 (3) 將套接字置於監聽模式並准備接受連接請求。(4) 客戶端創建套接字,調用SOCKET函數,方法同上。(5) 客戶向伺服器提出連接請求。(6) 當請求到來時,被阻塞服務進程的accept()函數如(3)中所述生成一個新的套接字與客戶端建立連接,並向客戶端返回接收信號。(7) 一旦客戶機的套接字收到來自伺服器的接收信號,則表示客戶機與伺服器的連接已就緒,則可以進行數據傳輸了。(8) 關閉套接字。一旦任務完成,就必須關掉連接已釋放套接字佔用的資源。創建連接的伺服器端和客戶端代碼簡述如下:伺服器端:void CServerView::OnStart ()
{ Started=TRUE;
m_Start.EnableWindow(!Started);
try
{ g_sListen.Create(6802,SOCK_DGRAM,NULL);
g_sListen.Bind(6802,m_IP);//,6802為埠號,m_IP為伺服器端IP地址
g_sListen.Listen();
((CServerDoc*)GetDocument())->g_pchatListen=new CChatLsnSock(
(CAnyServerDoc*)GetDocument());
CChatLsnSock* g_pchatListen=((CAnyServerDoc*)GetDocument())->g_pchatListen;
g_pchatListen->Create(9999,SOCK_STREAM);//偵聽聊天室連接套接字創建
g_pchatListen->Listen();
GetDlgItem(IDC_RESPONSE)->SetWindowText("開始對客戶端服務!");
}
服務端開啟後的運行界面如圖1所示。
客戶端:
void CClientView::OnClientStart()
{m_sockRecv.Create(6801,SOCK_DGRAM,m_ClientIP);//6801為埠號,m_ClientIP為客戶端IP<br>m_sockRecv.Bind(6801,m_ClientIP);<br>m_timer1=SetTimer(1,1000,NULL);<br>m_timer2=SetTimer(2,250,NULL);<br>GetLocalTime(&SysTime);<br>m_StartTime=SysTime;<br>m_WavePlay.SetStartTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);//畫出曲線初始時間<br>this->m_CurrentSysTime.SetFocus();<br>}
2.2網路中的數據傳輸與監控實現基於網路的遠程式控制制和測量應用中,一般數據傳輸採用二進制格式是主叢式,在人工氣候室的遠程監控系統中,通信雙方需要傳輸的數據流量少,下位機一般是微控制器等嵌入式系統,數據處理能力較慢,通信雙方也不必保持緊密聯系,因此大多採用UDP協議,基於點對點的方式,雙方通信的數據可靠性可以通過定義數據表示格式來保證。另外採用把通過網路傳輸過來的數據在客戶端用曲線的形式重畫顯示,用了一個本人自做的一個ActiveX控制項來顯示接收的數據,在數據傳輸過程中存在的滯後時間很短,可以忽略不計。在設備運行時,伺服器端的狀態一直保持開啟,測溫元件把測量到的溫度值傳入到控制微機,同時通過網路傳到遠程客戶端,遠程連接通過輸入伺服器端的IP地址,輸入指定的用戶名和密碼,就可以連接上,從而就實現了遠程監控。建立連接後客戶端就可以接收發送過來的溫度值且用曲線形式顯示出來:void CClientView::OnDataReceive()
{
extern CListBox* pmyListBox;
char szTempRecv[20];
CString szIP(m_IP);//得到伺服器端的IP
UINT uPort=6802;//指出埠
int iTempRecv=m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
szRecv[iRecv]='\0';
m_szRecv=szTempRecv;
m_listBox.AddString((LPCTSTR)m_szRecv);
int nCount=m_listBox.GetCount();
if (nCount > 0)
m_listBox.SetCurSel(nCount-1);
GetLocalTime(&SystemTime);
m_NowTime=SystemTime;
CString strSysTime;
strSysTime.Format(_T("%d-%d-%d %d:%d:%d"),SystemTime.wYear,SystemTime.wMonth,SystemTime.wDay,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);
UpdateData(FALSE);
CurABSTime=(m_NowTime-m_StartTime).GetTotalSeconds();
m_WavePlay.SetPoint2(CurABSTime,atoi(m_szRecv));//用自做ActiveX控制項畫出溫度曲線
完成後通過遠程登錄看到的運行界面
Ⅸ 提問大神!在C語言裡面,監視是干什麼的,在實踐中有什麼作用嗎
摘要 監視程序,這個名字聽起來似乎很陌生。它的用途主要是在後台監視系統中關鍵信息的改變,比如注冊表的改變及硬碟上由於文件操作引起的改變等等。
Ⅹ c語言能否實現對應用程序的監控,監測時間
用什麼程序只是表現方式不同,但都要用到API的。