當前位置:首頁 » 編程軟體 » 伺服器上編譯proc代碼

伺服器上編譯proc代碼

發布時間: 2023-04-19 08:57:00

㈠ /proc文件系統的作用

proc文件系統是一個偽文件系統,它只存在內存當中,而不佔用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供介面。用戶和應用程序可以通過proc得到系統的信息,並可以改變內核的某些參數。由於系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息並提交的。它的目錄結構如下:

目錄名稱 目錄內容
apm 高級電源管理信息
cmdline 內核命令行
Cpuinfo 關於Cpu信息
Devices 可以用到的設備(塊設備/字元設備)
Dma 使用的DMA通道
Filesystems 支持的文件系統
Interrupts 中斷的使用
Ioports I/O埠的使用
Kcore 內核核心印象
Kmsg 內核消息
Ksyms 內核符號表
Loadavg 負載均衡
Locks 內核鎖
Meminfo 內存信息
Misc 雜項
Moles 載入模塊列表
Mounts 載入的文件系統
Partitions 系統識別的分區表
Rtc 實時時鍾
Slabinfo Slab池信息
Stat 全面統計狀態表
Swaps 對換空間的利用情況
Version 內核版本
Uptime 系統正常運行時間

並不是所有這些目錄在你的系統中都有,這取決於你的內核配置和裝載的模塊。另外,在/proc下還有三個很重要的目錄:net,scsi和 sys。Sys目錄是可寫的,可以通過它來訪問或修改內核的參數(見下一部分),而net和scsi則依賴於內核配置。例如,如果系統不支持scsi,則 scsi目錄不存在。

除了以上介紹的這些,還有的是一些以數字命名的目錄,它們是進程目錄。系統中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名,它們是讀取進程信息的介面。而self目錄則是讀取進程本身的信息介面,是一個link。Proc文件系統的名字就是由之而起。進程目錄的結構如下:

目錄名稱 目錄內容
Cmdline 命令行參數
Environ 環境變數值
Fd 一個包含所有文件描述符的目錄
Mem 進程的內存被利用情況
Stat 進程狀態
Status 進程當前狀態,以可讀的方式顯示出來
Cwd 當前工作目錄的鏈接
Exe 指向該進程的執行命令文件
Maps 內存映象
Statm 進程內存狀態信息
Root 鏈接此進程的root目錄

用戶如果要查看系統信息,可以用cat命令。例如:

# cat /proc/interrupts
CPU0
0: 8728810 XT-PIC timer
1: 895 XT-PIC keyboard
2: 0 XT-PIC cascade
3: 531695 XT-PIC aha152x
4: 2014133 XT-PIC serial
5: 44401 XT-PIC pcnet_cs
8: 2 XT-PIC rtc
11: 8 XT-PIC i82365
12: 182918 XT-PIC Mouse
13: 1 XT-PIC fpu PS/2
14: 1232265 XT-PIC ide0
15: 7 XT-PIC ide1
NMI: 0

用戶還可以實現修改內核參數。在/proc文件系統中有一個有趣的目錄:/proc/sys。它不僅提供了內核信息,而且可以通過它修改內核參數,來優化你的系統。但是你必須很小心,因為可能會造成系統崩潰。最好是先找一台無關緊要的機子,調試成功後再應用到你的系統上。

要改變內核的參數,只要用vi編輯或echo參數重定向到文件中即可。下面有一個例子:

# cat /proc/sys/fs/file-max
4096
# echo 8192 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
8192

如果你優化了參數,則可以把它們寫成添加到文件rc.local中,使它在系統啟動時自動完成修改。

/proc文件系統中網路參數
在/proc/sys/net/ipv4/目錄下,包含的是和tcp/ip協議相關的各種參數,下面我們就對這些網路參數加以詳細的說明。

ip_forward 參數類型:BOOLEAN
0 - 關閉(默認值)
not 0 - 打開ip轉發

在網路本地介面之間轉發數據報。該參數非常特殊,對該參數的修改將導致其它所有相關配置參數恢復其默認值(對於主機參閱RFC1122,對於路由器參見RFC1812)

ip_default_ttl 參數類型:INTEGER
默認值為 64 。表示IP數據報的Time To Live值。

ip_no_pmtu_disc 參數類型:BOOLEAN
關閉路徑MTU探測,默認值為FALSE

ipfrag_high_thresh 參數類型:整型
用來組裝分段的IP包的最大內存量。當ipfrag_high_thresh數量的內存被分配來用來組裝IP包,則IP分片處理器將丟棄數據報直到ipfrag_low_thresh數量的內存被用來組裝IP包。

ipfrag_low_thresh 參數類型:整型
參見ipfrag_high_thresh。

ipfrag_time 參數類型:整型
保存一個IP分片在內存中的時間。

inet_peer_threshold 參數類型:整型
INET對端存儲器某個合適值,當超過該閥值條目將被丟棄。該閥值同樣決定生存時間以及廢物收集通過的時間間隔。條目越多,存活期越低,GC 間隔越短

inet_peer_minttl 參數類型:整型
條目的最低存活期。在重組端必須要有足夠的碎片(fragment)存活期。這個最低存活期必須保證緩沖池容積是否少於 inet_peer_threshold。該值以 jiffies為單位測量。

inet_peer_maxttl 參數類型:整型
條目的最大存活期。在此期限到達之後,如果緩沖池沒有耗盡壓力的話(例如,緩沖池中的條目數目非常少),不使用的條目將會超時。該值以 jiffies為單位測量。

inet_peer_gc_mintime 參數類型:整型
廢物收集(GC)通過的最短間隔。這個間隔會影響到緩沖池中內存的高壓力。 該值以 jiffies為單位測量。

inet_peer_gc_maxtime 參數類型:整型
廢物收集(GC)通過的最大間隔,這個間隔會影響到緩沖池中內存的低壓力。 該值以 jiffies為單位測量。

tcp_syn_retries 參數類型:整型
對於一個新建連接,內核要發送多少個 SYN 連接請求才決定放棄。不應該大於255,默認值是5,對應於180秒左右。

tcp_synack_retries 參數類型:整型
對於遠端的連接請求SYN,內核會發送SYN + ACK數據報,以確認收到上一個 SYN連接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這里決定內核在放棄連接之前所送出的 SYN+ACK 數目。

tcp_keepalive_time 參數類型:整型
當keepalive打開的情況下,TCP發送keepalive消息的頻率,默認值是2個小時。

tcp_keepalive_probes 參數類型:整型
TCP發送keepalive探測以確定該連接已經斷開的次數,默認值是9。

tcp_keepalive_interval 參數類型:整型
探測消息發送的頻率,乘以tcp_keepalive_probes就得到對於從開始探測以來沒有響應的連接殺除的時間。默認值為75秒,也就是沒有活動的連接將在大約11分鍾以後將被丟棄。

tcp_retries1 參數類型:整型
當出現可疑情況而必須向網路層報告這個可疑狀況之前,需要進行多少次重試。最低的 RFC 數值是 3 ,這也是默認值,根據RTO的值大約在3秒 - 8分鍾之間。

tcp_retries2 參數類型:整型
在丟棄激活的TCP連接之前,需要進行多少次重試。RFC1122規定,該值必須大於100秒。默認值為15,根據RTO的值來決定,相當於13-30分鍾,

tcp_orphan_retries 參數類型:整型
在近端丟棄TCP連接之前,要進行多少次重試。默認值是 7 個,相當於 50秒 - 16分鍾,視 RTO 而定。如果您的系統是負載很大的web伺服器,那麼也許需要降低該值,這類 sockets 可能會耗費大量的資源。另外參的考 tcp_max_orphans 。

tcp_fin_timeout 參數類型:整型
對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡。默認值為 60 秒。過去在2.2版本的內核中是 180 秒。您可以設置該值,但需要注意,如果您的機器為負載很重的web伺服器,您可能要冒內存被大量無效數據報填滿的風險,FIN-WAIT-2 sockets 的危險性低於 FIN-WAIT-1 ,因為它們最多隻吃 1.5K 的內存,但是它們存在時間更長。另外參考 tcp_max_orphans。

tcp_max_tw_buckets 參數類型:整型
系統在同時所處理的最大timewait sockets 數目。如果超過此數的話,time-wait socket 會被立即砍除並且顯示警告信息。之所以要設定這個限制,純粹為了抵禦那些簡單的 DoS 攻擊,千萬不要人為的降低這個限制,不過,如果網路條件需要比默認值更多,則可以提高它(或許還要增加內存)。

tcp_tw_recycle 參數類型:布爾
打開快速 TIME-WAIT sockets 回收。默認值是1。除非得到技術專家的建議或要求,請不要隨意修改這個值。

tcp_max_orphans 參數類型:整型
系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量,那麼不屬於任何進程的連接會被立即reset,並同時顯示警告信息。之所以要設定這個限制,純粹為了抵禦那些簡單的 DoS 攻擊,千萬不要依賴這個或是人為的降低這個限制

tcp_abort_on_overflow 參數類型:布爾
當守護進程太忙而不能接受新的連接,就象對方發送reset消息,默認值是false。這意味著當溢出的原因是因為一個偶然的猝發,那麼連接將恢復狀態。只有在你確信守護進程真的不能完成連接請求時才打開該選項,該選項會影響客戶的使用。

tcp_syncookies 參數類型:整型
只有在內核編譯時選擇了CONFIG_SYNCOOKIES時才會發生作用。當出現syn等候隊列出現溢出時象對方發送syncookies。目的是為了防止syn flood攻擊。默認值是false。

注意:該選項千萬不能用於那些沒有收到攻擊的高負載伺服器,如果在日誌中出現synflood消息,但是調查發現沒有收到synflood攻擊,而是合法用戶的連接負載過高的原因,你應該調整其它參數來提高伺服器性能。參考: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.

syncookie嚴重的違背TCP協議,不允許使用TCP擴展,可能對某些服務導致嚴重的性能影響(如SMTP轉發)。

tcp_strg 參數類型:整型
使用 TCP urg pointer 欄位中的主機請求解釋功能。大部份的主機都使用老舊的 BSD解釋,因此如果您在 linux 打開它,或會導致不能和它們正確溝通。默認值為為:FALSE

tcp_max_syn_backlog 參數類型:整型
對於那些依然還未獲得客戶端確認的連接請求,需要保存在隊列中最大數目。對於超過 128Mb 內存的系統,默認值是 1024 ,低於 128Mb 的則為 128。如果伺服器經常出現過載,可以嘗試增加這個數字。警告!假如您將此值設為大於 1024,最好修改 include/net/tcp.h 裡面的 TCP_SYNQ_HSIZE ,以保持 TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog ,並且編進核心之內。

tcp_window_scaling 參數類型:布爾
正常來說,TCP/IP 可以接受最大到65535位元組的 windows。對於寬頻網路,該值可能是不夠的,通過調整該參數有助於提高寬頻伺服器性能。

tcp_timestamps 參數類型:布爾
Timestamps 用在其它一些東西中,可以防範那些偽造的 sequence 號碼。一條1G的寬頻線路或許會重遇到帶 out-of-line數值的舊sequence 號碼(假如它是由於上次產生的)。Timestamp 會讓它知道這是個 '舊封包'。

tcp_sack 參數類型:布爾
使用 Selective ACK,它可以用來查找特定的遺失的數據報--- 因此有助於快速恢復狀態。

tcp_fack 參數類型:布爾
打開FACK擁塞避免和快速重傳功能。

tcp_dsack 參數類型:布爾
允許TCP發送"兩個完全相同"的SACK。

tcp_ecn 參數類型:布爾
打開TCP的直接擁塞通告功能。

tcp_reordering 參數類型:整型
TCP流中重排序的數據報最大數量默認值是 3 。

tcp_retrans_collapse 參數類型:布爾
對於某些有bug的列印機提供針對其bug的兼容性。

tcp_wmem - 三個整數的向量: min, default, max
min:為TCP socket預留用於發送緩沖的內存最小值。每個tcp socket都可以在建議以後都可以使用它。默認值為4K。

default:為TCP socket預留用於發送緩沖的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem_default 值,一般要低於net.core.wmem_default的值。默認值為16K。

max: 用於TCP socket發送緩沖的內存最大值。該值不會影響net.core.wmem_max,今天選擇參數SO_SNDBUF則不受該值影響。默認值為128K。

tcp_rmem - 三個整數的向量: min, default, max
min:為TCP socket預留用於接收緩沖的內存數量,即使在內存出現緊張情況下tcp socket都至少會有這么多數量的內存用於接收緩沖,默認值為8K。

default:為TCP socket預留用於接收緩沖的內存數量,默認情況下該值影響其它協議使用的 net.core.wmem_default 值。該值決定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win:0是默認值情況下,tcp 窗口大小為65535。

max:用於TCP socket接收緩沖的內存最大值。該值不會影響 net.core.wmem_max,今天選擇參數 SO_SNDBUF則不受該值影響。默認值為 128K。默認值為87380*2 bytes。

tcp_mem - 三個整數的向量: low, pressure, high
low:當TCP使用了低於該值的內存頁面數時,TCP不會考慮釋放內存。

pressure:當TCP使用了超過該值的內存頁面數量時,TCP試圖穩定其內存使用,進入pressure模式,當內存消耗低於low值時則退出pressure狀態。

high:允許所有tcp sockets用於排隊緩沖數據報的頁面量。

一般情況下這些值是在系統啟動時根據系統內存數量計算得到的。

tcp_app_win - 整數

保留max(window/2^tcp_app_win, mss)數量的窗口由於應用緩沖。當為0時表示不需要緩沖。默認值是31。

tcp_adv_win_scale - 整數
計算緩沖開銷bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale <= 0),默認值為2。

ip_local_port_range - 兩個整數
定於TCP和UDP使用的本地埠范圍,第一個數是開始,第二個數是最後埠號,默認值依賴於系統中可用的內存數:
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
該值決定了活動連接的數量,也就是系統可以並發的連接數

icmp_echo_ignore_all - 布爾類型
icmp_echo_ignore_broadcasts - 布爾類型
如果任何一個設置為true(>0)則系統將忽略所有發送給自己的ICMP ECHO請求或那些廣播地址的請求。

icmp_destunreach_rate - 整數
icmp_paramprob_rate - 整數
icmp_timeexceed_rate - 整數
icmp_echoreply_rate - 整數(not enabled per default)
限制發向特定目標的ICMP數據報的最大速率。0表示沒有任何限制,否則表示jiffies數據單位中允許發送的個數。

icmp_ignore_bogus_error_responses - 布爾類型
某些路由器違背RFC1122標准,其對廣播幀發送偽造的響應來應答。這種違背行為通常會被以告警的方式記錄在系統日誌中。如果該選項設置為True,內核不會記錄這種警告信息。默認值為False。

(1) Jiffie: 內核使用的內部時間單位,在i386系統上大小為1/100s,在Alpha中為1/1024S。在/usr/include/asm/param.h中的HZ定義有特定系統的值。

conf/interface/*:
conf/all/*是特定的,用來修改所有介面的設置,is special and changes the settings for all interfaces.
Change special settings per interface.

log_martians - 布爾類型
記錄帶有不允許的地址的數據報到內核日誌中。

accept_redirects - 布爾類型
收發接收ICMP重定向消息。對於主機來說默認為True,對於用作路由器時默認值為False。

forwarding - 布爾類型
在該介面打開轉發功能

mc_forwarding - 布爾類型
是否進行多播路由。只有內核編譯有CONFIG_MROUTE並且有路由服務程序在運行該參數才有效。

proxy_arp - 布爾類型
打開proxy arp功能。

shared_media - 布爾類型
發送(路由器)或接收(主機) RFC1620 共享媒體重定向。覆蓋ip_secure_redirects的值。默認為True。

secure_redirects - 布爾類型
僅僅接收發給默認網關列表中網關的ICMP重定向消息,默認值是TRUE。

send_redirects - 布爾類型
如果是router,發送重定向消息,默認值是TRUE

bootp_relay - 布爾類型
接收源地址為0.b.c.d,目的地址不是本機的數據報。用來支持BOOTP轉發服務進程,該進程將捕獲並轉發該包。默認為False,目前還沒有實現。

accept_source_route - 布爾類型
接收帶有SRR選項的數據報。對於主機來說默認為False,對於用作路由器時默認值為True。

rp_filter 參數類型
1 - 通過反向路徑回溯進行源地址驗證(在RFC1812中定義)。對於單穴主機和stub網路路由器推薦使用該選項。
0 - 不通過反向路徑回溯進行源地址驗證。
默認值為0。某些發布在啟動時自動將其打開。

㈡ 伺服器: 消息 201,級別 16,狀態 4,過程 proc_作業BOM拷貝,行 0 過程 'proc_作業BOM拷貝' 需要參數

你可以在執行亂頌早時候加多一句 @應付款=''
為空表示給個空值,因為這里只是服從之前的格式
declare @應付款 int
exec test_xq @卡單編嘩雀號='1',@應付款櫻枝=''
print @應付款

這樣就行啦。
請參考

㈢ Linux內核proc模塊時遇到create_proc_read_entry函數undefined的情況應該怎麼辦

第30行 警告 hello_init 中 create_proc_entry函數傳遞參數時類型不匹配(在傳遞參數 時,間接使用了強制類型轉換)
第17行 注意 錯誤與上面類似
第34行 錯誤 proc_entry 未聲明
注意 同上

第34行 錯誤 hello_read 未聲明
第35行 錯誤 同上
警告和注意的地方不改,編譯能成功
錯悉拍誤必須得改,那些沒有聲明(定義)的變數或者函數,仔細看看源代碼,在調備陸棗用前加上對應的聲明就行,easy
你英語水平是不是很菜,讀不懂么仿拆?
有時間多學學英文,對搞計算機編程大有幫助
搞不懂的查單詞,上網搜,基本的程序出錯搜幾次就能大概看懂了

㈣ 求指點.魔獸世界伺服器源代碼怎麼編譯通過

Mangos服務端是一個多線程、邏輯單線程的服務端。每個線程內部都採用循環結構,主線程啟動後將創建多個工作線程,主要包括負責游戲世界運作的核心線程,具有處理用戶請求,執行定時器的能力。其它幾個工毀鬧返作線程還有網路Io,該線程啟動後其內部將使用線程池進行網路Io操作,不間斷地接收數據包彎悔,並存儲到相關玩家的消息隊列中,由世纖飢界線程進行處理,其它幾個工作線程先不討論,因為今天也是第一次看mangos的源代碼.務端啟動後這些線程將永不停息地工作。世界線程是伺服器的核心,負責處理所有玩家操作請求,定時器、AI等。
void HandleGroupInviteOpcode(WorldPacket& recvPacket);
void (WorldPacket& recvPacket);
void HandleGroupUninviteOpcode(WorldPacket& recvPacket);
void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
void HandleOptOutOfLootOpcode(WorldPacket& recv_data);

㈤ 如何用C#語言通過服務來實現開機啟動

很多開機啟動程序僅僅加在啟動項裡面,只有登陸後才真正啟動。windows服務在開機未進行用戶登錄前就啟動了。正是利用這咐型辯一點,解決一些伺服器自動重啟後特定軟體也自動啟動的問題。
1.新建一個服務項目 visual C#----windows----windows服務;
2.添加一個租手dataset(.xsd),用於存儲啟動目標的路徑,日誌路徑等。
在dataset可視化編輯中,添加一個datatable,包含兩列 StartAppPath 和 LogFilePath。分別用於存儲目標的路徑、日誌路徑。
*我認為利用dataset.xsd存儲配置參數的優勢在於可以忽略xml解析的具體過程直接使用xml文件。
在dataset中 提供了ReadXml方法用於讀取xml文件並將其轉換成內存中的一張datatable表,數據很容易取出來!同樣,WriteXml方法衡缺用於存儲為xml格式的文件,也僅僅需要一句話而已。
3. program.cs文件 作為程序入口,代碼如下:
view plain to clipboardprint?
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;

namespace WindowsServices_AutoStart
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;

// 同一進程中可以運行多個用戶服務。若要將
// 另一個服務添加到此進程中,請更改下行以
// 創建另一個服務對象。例如,
//
// ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() };

ServiceBase.Run(ServicesToRun);
}
}
}
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;
namespace WindowsServices_AutoStart
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
// 同一進程中可以運行多個用戶服務。若要將
// 另一個服務添加到此進程中,請更改下行以
// 創建另一個服務對象。例如,
//
// ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new ServiceBase[] { new WindowsServices_AutoStart() };
ServiceBase.Run(ServicesToRun);
}
}
}
4.service.cs主文件,代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
namespace WindowsServices_AutoStart
{
public partial class WindowsServices_AutoStart : ServiceBase
{
public WindowsServices_AutoStart()
{
InitializeComponent();
}
string StartAppPath =""; //@"F:\00.exe";
string LogFilePath ="";// @"f:\WindowsService.txt";
protected override void OnStart(string[] args)
{
string exePath = System.Threading.Thread.GetDomain().BaseDirectory;
//
if (!File.Exists(exePath + @"\ServiceAppPath.xml"))
{
dsAppPath ds = new dsAppPath();
object[] obj=new object[2];
obj[0]="0";
obj[1]="0";
ds.Tables["dtAppPath"].Rows.Add(obj);
ds.Tables["dtAppPath"].WriteXml(exePath + @"\ServiceAppPath.xml");
return;
}
try
{
dsAppPath ds = new dsAppPath();
ds.Tables["dtAppPath"].ReadXml(exePath + @"\ServiceAppPath.xml");
DataTable dt = ds.Tables["dtAppPath"];
StartAppPath = dt.Rows[0]["StartAppPath"].ToString();
LogFilePath = dt.Rows[0]["LogFilePath"].ToString();
}
catch { return; }

if (File.Exists(StartAppPath))
{
try
{
Process proc = new Process();
proc.StartInfo.FileName = StartAppPath; //注意路徑
//proc.StartInfo.Arguments = "";
proc.Start();
}
catch (System.Exception ex)
{
//MessageBox.Show(this, "找不到幫助文件路徑。文件是否被改動或刪除?\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
FileStream fs = new FileStream(LogFilePath, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("WindowsService: Service Started" + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
}
protected override void OnStop()
{
try
{
// TODO: 在此處添加代碼以執行停止服務所需的關閉操作。
FileStream fs = new FileStream(LogFilePath, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("WindowsService: Service Stopped " + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
catch
{
}
}
}
}

5.啟動調試,成功時也會彈出一個對話框大致意思是提示服務需要安裝。
6.把Debug文件夾下面的.exe執行程序,安裝為windows系統服務,安裝方法網上很多介紹。我說一種常用的:
安裝服務
訪問項目中的已編譯可執行文件所在的目錄。
用項目的輸出作為參數,從命令行運行 InstallUtil.exe。在命令行中輸入下列代碼:
installutil yourproject.exe
卸載服務
用項目的輸出作為參數,從命令行運行 InstallUtil.exe。
installutil /u yourproject.exe
至此,整個服務已經編寫,編譯,安裝完成,你可以在控制面板的管理工具的服務中,看到你編寫的服務。
7.安裝好了之後在系統服務列表中可以管理服務,這時要注意將服務的屬性窗口----登陸----「允許於桌面交互」勾選!這樣才能在啟動了你要的目標程序後不單單存留於進程。在桌面上也看得到。
8.關於卸載服務,目前有兩個概念:一是禁用而已;一是完全刪除服務。 前者可以通過服務管理窗口直接完成。後者則需要進入注冊表「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services」找到服務名稱的文件夾,整個刪掉,重新啟動電腦後,服務消失。
9.擴展思考:經過修改代碼,還可以實現:啟動目標程序之前,檢測進程中是否存在目標程序,存在則不再次啟動

㈥ 伺服器proc是什麼意思

一般是Linux伺服器中出現。
/proc 是個虛擬文件系統、也就是、重新引導後耐核修改會被重新初始化
提供了進程信息、內存資源、硬體設備、內核內存等信息殲或
比如:
網卡:/proc/sys/vm/ipv4/ip_forward:控制ip轉發
內存:/昌改掘proc/sys/vm/drop_caches:輸入1強制內核從緩存釋放一些內存

㈦ 如何把自己的ip和伺服器建外自己的編譯器

把自己的ip和伺服器建外自己的編譯器,步驟巧拆如下:
1、為了創建一個編譯器,需要選擇一種編程語言槐閉和開發工具。
2、編譯器語法是編譯器的核心部分,定義了編程語言的語法和結構。
3、有了設計好鉛寬裂的編譯器語法後,需要根據語法編寫編譯器代碼。在編寫編譯器代碼時,需要考慮編譯器的性能、可靠性和易用性等方面。
4、要建立自己的伺服器和IP地址,伺服器需要與編譯器和網路技術相匹配,而IP地址則需要根據需求和使用場景進行選擇。
5、在購買伺服器和域名後,需要進行伺服器配置和IP地址設置。

㈧ 如何在linux系統的伺服器上進行編譯

方法/步驟

  • 打開Myeclipse編輯器,在已經完成的web項目上面點擊右鍵,選擇export,然後選擇導出成war包,將導出的war包放在桌面或者其他文件夾。

㈨ vc++6.0編譯時出現'proc' 不是內部或外部命令,也不是可運行的程序 或批處理文件。

如果你的Oracle在vc之後安裝的 則需要配置路徑。要把proc這個可執行文件包含到路徑中
具體的方法是 在工具下面找選項,在選項的頁面下 選擇可執行文件 這一項。然後將Oracle中proc文件的路徑 添加進去。這里說的不夠具體。你可以繼續查怎麼配置
雖然這個問題已經過去了很久。但希望給以後看的人一點啟示。

㈩ PROC編譯

可以把問題描述清楚一點,這樣才能更快獲得幫助。
使用proc來轉換源文件的命令通常是:
proc parse=full USERID=user/pwd@dns SQLCHECK=SEMANTICS yourfile.pc include="/oracle/app/oracle/proct/9.2.0/precomp/public"
其中,parse=full一般是固定的,
USERID後面跟上連接到oracle資料庫的連接字元串,格式為:用戶/密碼@伺服器名
SQLCHECK=SEMANTICS 指明SQLCHECK參數,一般也是固定的
include=&quo肌埂冠忌攉渙圭惟氦隸t;/oracle/app/oracle/proct/9.2.0/precomp/public"指明預編譯時候需要的頭文件路徑
其中/oracle/app/oracle/proct/9.2.0是你的oracle數字路徑,後面的precomp/public是固定的
yourfile.pc 你想要轉換的使用嵌入式SQL編寫好的源文件。
執行之後,如果沒錯,就會生成.c源文件,編譯就可以了。
如果執行出錯,會生成*.lis文件,指出出錯的地方,按照錯誤說明修改之後再試。
需要注意相關環境變數要配置正確,.pc源文件里所用到的表,欄位,存儲過程等在資料庫中要存在,並且,連接上去的用戶要有相關表的訪問許可權。

熱點內容
java默認類 發布:2025-07-14 16:51:03 瀏覽:278
術後解壓 發布:2025-07-14 16:39:47 瀏覽:660
手機版我的世界怎麼輸入伺服器ip 發布:2025-07-14 16:25:21 瀏覽:721
pythonsysstdout 發布:2025-07-14 16:15:29 瀏覽:196
ef資料庫更新模型 發布:2025-07-14 16:14:05 瀏覽:411
少兒編程教育平台 發布:2025-07-14 16:13:54 瀏覽:301
相關存儲格式圖片 發布:2025-07-14 16:13:50 瀏覽:144
搭建酒店伺服器 發布:2025-07-14 16:13:49 瀏覽:133
下載pythonmysqldb 發布:2025-07-14 16:05:43 瀏覽:977
生化危機5配置要求怎麼樣 發布:2025-07-14 15:38:56 瀏覽:301