Time of Update: 2018-12-05
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>//#include <fcntl.h>#include <sys/ioctl.h>//#include <netdb.h>#include <netinet/in.h>#include
Time of Update: 2018-12-05
PS:前天有童鞋問我,為啥我的Linux系統沒運行多少程式,顯示的可用記憶體這麼少?其實Linux與Win的記憶體管理不同,會盡量緩衝記憶體以提高讀寫效能,通常叫做Cache Memory。有時候你會發現沒有什麼程式在運行,但是使用top或free命令看到可用記憶體free項會很少,此時查看系統的 /proc/meminfo 檔案,會發現有一項 Cached Memory:輸入cat /proc/meminfo查看:MemTotal: 16425996 kBMemFree: 5698808
Time of Update: 2018-12-05
#ifdef WIN32#include <Windows.h>#else#include <stdio.h>#include <unistd.h>#endif#include <assert.h>std::string getCurrentAppPath(){#ifdef WIN32char path[MAX_PATH + 1] = {0};if (GetModuleFileName(NULL, path, MAX_PATH) !=
Time of Update: 2018-12-05
#ifndef _SOCKET_TYPE_H#define _SOCKET_TYPE_H#ifdef _WIN32#include <winsock2.h>#define ERRNO(WSAGetLastError())#define NEEDBLOCKWSAEWOULDBLOCKtypedef int socklen_t;#else#include <netinet/in.h>#include <sys/types.h>#include
Time of Update: 2018-12-05
#include <stdio.h>#include <sys/types.h>#include <ifaddrs.h>#include <netinet/in.h>#include <string.h>#include <arpa/inet.h>#include <vector>void getlocaliplist(std::vector<unsigned int>&
Time of Update: 2018-12-05
在linux中,一旦fork出子進程後,子進程就會繼承主進程的描述符,這為開發人員帶來了不少問題,比如當我使用socket的時候,一旦我綁定了某個連接埠,而後fork,如果此時fork出的子進程不退出的,那麼我主進程重啟後,就會出現無法綁定連接埠的問題。當然解決這種問題你可以選擇在socket初始化時,加入SOCK_CLOEXEC這個選項,使得子進程不繼承。那下面就介紹一種通用方法(如有問題,歡迎指出):#include <stdlib.h>#include <stdio.h&
Time of Update: 2018-12-05
1.使用命令在bash中使用ulimit,僅對當前shell生效另外可以在bashrc等啟動指令碼裡面加上ulimit的命令列2.使用函數在自己的程式中調用setrlimit來修改3.修改設定檔(沒試過,看到別人寫的)debian/redhat下修改/etc/security.limits.conf,增加類似如下兩行:* soft nofile 4096* hard nofile 4096slackware下修改/建立/etc/limits,增加一行:* N4096在debian3.1,
Time of Update: 2018-12-05
Time of Update: 2018-12-05
linux開發輔助命令(一)1.查看進程開啟的檔案lsof2.查看ipv4,ipv6監聽狀態與對應進程lsof -Pnl +M -i4lsof -Pnl +M -i63.查看rpm安裝資訊rpm -ql 安裝包名稱4.修改當前shell的可開啟描述符最大值ulimt -SHn 655355.添加防火牆/sbin/iptables -A INPUT -i eth0 -p tcp --sport 143 -j ACCEPT/sbin/iptables -A INPUT -i eth0 -p udp
Time of Update: 2018-12-05
修改dnsvi /etc/resolv.confnameserver 61.177.7.1centos修改網路參數vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 #物理裝置名稱TYPE=EthernetHWADDR=18:20:27:21:A7:2BNAME="system eth0"IPADDR=192.168.1.10 #IP地址NETMASK=255.255.255.0 #掩碼NETWORK=192.168.1.0
Time of Update: 2018-12-05
我一直都沒有寫部落格的習慣,最近正好在研究linux下的開發(目前也只是粗粗的研究),且用到了boost庫,就乘此機會寫點什麼,最起碼記錄一下我在安裝boost的一些步驟,主要給和我一樣的linux開發新手們提供點借鑒(當然如果看到這篇文檔的話 ),作者(jwybobo2007)。 1.下載boost庫 這個我就不說啥了,去官網看一下就能下到: www.boost.org ,現在的版本更新到了1.44 2.執行:sudo apt-get
Time of Update: 2018-12-05
前段時間由於項目需要,要解avi檔案,當時我第一時間想到用ffmpeg來處理,但想想覺得太大了,又是放到arm上跑的,感覺沒必要。然後,搜尋引擎上稍微搜了一下,沒找到有用的樣本,大部分都是利用windows的api進行讀寫,很明顯linux下用不了。結果花了2-3天時間研究並寫了一個avi檔案的解鎖裝代碼,但是後來因某些原因沒有去使用AVI了,所以代碼也沒進行後續的完善最佳化。這裡貼出來供記錄以及需要的人作參考。標頭檔:/*!@brief avi檔案分析提取器@author jwybobo200
Time of Update: 2018-12-05
Linux下安裝Oralce10G一. 安裝oracle (1) 解壓過程(以oracle登入,釋放安裝檔案,使用更少的磁碟空間,速度更快) 在/tmp下解壓縮10201_database_linux32.zip:unzip 10201_database_linux32.zip開始安裝oracle (2)開始安裝: 用root執行 #xhost + 以oracle使用者登入系統,進行Oracle的安裝:cd /tmp/database
Time of Update: 2018-12-05
例如,對於u m a s k值0 0 2,相應的檔案和目錄預設建立許可權是什麼呢?第一步,我們首先寫下具有全部許可權的模式,即7 7 7 (所有使用者都具有讀、寫和執行許可權)。第二步,在下面一行按照u m a s k值寫下相應的位,在本例中是0 0 2。第三步,在接下來的一行中記下上面兩行中沒有匹配的位。這就是目錄的預設建立許可權。稍加練習就能夠記住這種方法。第四步,對於檔案來說,在建立時不能具有檔案許可權,只要拿掉相應的執行許可權位元即可。這就是上面的例子,其中u m a s k值為0 0
Time of Update: 2018-12-05
ln命令:ln命令是用來建立永久連結和符號連結的.永久連結:$ ln file1 file2$ cat file1 file2 可以看到file2和檔案file1是完全相同的。如果你刪除了檔案file1,檔案file2依然存在,反之刪除了file2,file1也是依然存在;這兩個檔案只要修改了任意一個檔案,另一個也會隨之更新。 符號連結:$ ln -s file1
Time of Update: 2018-12-05
1、su和su - 的區別在我的fc6系統下用普通使用者登入,然後用su命令切換到超級使用者,再輸入ifconfig命令,報錯:command not find。而如果用su -命令切換到超級使用者,再輸入ifconfig命令則能成功執行。這其中涉及的就是su命令與su -命令的區別,man su得到的協助文檔如下:-, -l, --login make the shell a login shell 翻譯過來的意思如下:-.-l或--login
Time of Update: 2018-12-05
1、cat /proc/version核心版本#cat /proc/versionLinux version 2.6.5-7.244-smp (geeko@buildhost) (gcc version 3.3.3 (SuSE Linux))#1 SMP Mon Dec 12 18:32:25 UTC 2005 2、uname -a 核心版本 #uname -a Linux WebServer 2.6.5-7.244-smp #1 SMP Mon Dec 12 18:32:25 UTC 200
Time of Update: 2018-12-05
早在好些時間以前,番茄花園給撲掉之後,我就感慨,那天出現一個類似番茄花園的linux,那麼人們就會有一個更加好的選擇了。那個時候linux就是僅僅是電腦專業人士的作業系統了。不敢說linux給微軟帶來很大衝擊,起碼人們(特別是非電腦專業的人)選擇的面更加廣了,不用背“智慧財產權的黑鍋”了。早在兩個多月前就用下載了雨林木風的ubuntu,但是真正做到完全在linux工作和學習是近這段時間的事情,因為近來有linux的實驗要求。選用雨林木風的linux OS可以省很多時間。不錯,贊一個!
Time of Update: 2018-12-05
Linux作業系統網路編程--原始通訊端 (1)http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml 我們在前面已經學習過了網路程式的兩種通訊端(SOCK_STREAM,SOCK_DRAGM).在這一章 裡面我們一起來學習另外一種通訊端--原始通訊端(SOCK_RAW)。應用原始通訊端,我們可以編寫出由TCP和UDP通訊端不能夠實現的功能. 注意原始通訊端只能夠由有root許可權的人建立。 原始通訊端的建立 int
Time of Update: 2018-12-05
開始安裝首先修改/etc/inittab檔案將:id:5:initdefault:改為:id:3:initdefault:#vi /etc/inittab然後重啟電腦系統進入字元模式並用root登入,隨後運行NVIDIA-linux-x86-1.0-5336-pkg1.run# sh NVIDIA-linux-x86-1.0-5336-pkg1.run然後根據提示作出選擇,安裝大概用時5分鐘。接著修改XF86Config檔案把Driver “nv”手動改成Driver “nvidia”#vi /