cp監控源碼
你看的是什麼版本的內核? 在最新的linux內核中已經沒有這么用了,我查了一下老版本的內核(0.11),才找到你問的問題。
#define BLOCK_SIZE 1024
#define BLOCK_SIZE_BITS 10
所以 *pos (32bit) 的組成是 低10位是偏移量。這是因為 BLOCK_SIZE=1024=0x400 所以 BLOCK_SIZE-1=1023=0x3FF,所以
int offset = *pos & (BLOCK_SIZE-1);
所以offset = *pos & 0x3FF, 相當於取 *pos的低10位。
而*pos的高 22 位則是塊序號,這很好理解
int block = *pos >> BLOCK_SIZE_BITS; 就是將 *pos右移10位,那麼就只剩高22位了,所以說高22位是塊序號,低10位是在塊內的偏移量.
請參考,希望能幫到你。
② 用C語言 寫unix 的 cp指令
你問的不是很清楚。
cp命令的話
cp dir1 dir2肯定不行的嘛,拷貝目錄要加-R 或者-a參數的。
如果是自己寫程序實現cp命令的話,用stat, 或者 lstat 或者 fstat函數。
具體查manpage.
③ linux進程間通信實驗(管道)求源代碼
到CSDN或PSDN去找吧。
比如:
unix環境高級編程源碼
www.pudn.com/downloads190/sourcecode/unix_linux/detail891285.html
④ 在linux中install命令和cp命令的區別
基本上,在Makefile里會用到install,其他地方會用cp命令。
完成同樣的任務——拷貝文件,兩者之間的區別主要如下:
1、最重要的一點,如果目標文件存在,cp會先清空文件後往裡寫入新文件,而install則會先刪除掉原先的文件然後寫入新文件。這是因為往正在
使用的文件中寫入內容可能會導致一些問題,比如說寫入正在執行的文件可能會失敗,比如說往已經在持續寫入的文件句柄中寫入新文件會產生錯誤的文件。而使用
install先刪除後寫入(會生成新的文件句柄)的方式去安裝就能避免這些問題了;
2、install命令會恰當地處理文件許可權的問題。比如說,install -c會把目標文件的許可權設置為rwxr-xr-x;
3、install命令可以列印出更多更合適的debug信息,還會自動處理SElinux上下文的問題。
⑤ 目前最好的問答系統源碼是什麼
php的有個tipask免費開源的,你可以去官方看看
下面是Tipask的特點(cp的):
Tipask系統特性
* MVC模式開發,二次開發更容易
* 支持純靜態Html生成,SEO友好
* 支持UCenter,方便和諸多系統整合
* 支持通行證整合,可以與phpwind、dedecms、shopex等整合
* 支持微博分享,問題能輕松分享到新浪、騰訊、開心網、人人網等
* 支持問題狀態通知,包括站內簡訊和郵件提示
* 佔用系統資源少,運行速度快
⑥ Linux 下二進制源碼包安裝mysql 詳細過程
安裝之前先把二進制源碼准備好,可以從搜狐鏡像下載:我准備的是mysql-5.5.15-linux2.6-i686.tar.gz
,linux
version
2.6.18-164.el5
實際工作中和虛擬機的配置有些地方可能會不相同
====================================================================
注意:mysql
安裝的時候必須指定到
/usr/local
必須命名為mysql
二進制源碼安裝需要在安裝目錄/usr/local下運行
復制代碼代碼如下:
//創建用戶mysql
*
groupadd
-g
3306
mysql
*
useradd
-g
mysql
-u
3306
-M
mysql
*
id
mysql
*
chown
-R
mysql:mysql
/mydata/
//
mysql對目錄要有寫許可權
*
ll
-d
/mydata/
*
cp
/mysql-5.5.15-linux2.6-i686
/usr/local
*
cd
/usr/local/mysql
//
開始初始化
mysql
*
chown
-R
mysql:mysql
.
*
ln
-sv
/mysql-5.5.15-linux2.6-i686
mysql
*
scripts/mysql_install_db
--user=mysql
--datadir=/mydata/data
//
<span
style="color:#993300;">scripts腳本初始化</span>
初始化
用來生成mysql資料庫
資料庫用來存放表等源數據信息
復制代碼代碼如下:
//安裝完成
下面配置啟動
*
ls
support-files/
//
准備服務啟動腳本
*
cp
support-files/mysql.server
/etc/init.d/mysqld
//
放入init.d
*
chkconfig
--add
mysqld
//
加入服務列表
*
chkconfig
--list
mysqld
//
--list
顯示出來
復制代碼代碼如下:
//此時可以啟動mysql了
但還需要配置mysql
*
ls
/etc/my.cnf
*
ls
support-files/
*
cp
support-files/my-large.cnf
/etc/my.cnf
*
vim
/etc/my.cnf
[mysqld]
//
找到該段
並添加datadir
=
/mydata/data
datadir
=
/mydata/data
*
service
mysqld
start
//
開啟服務
*
netstat
-tnl
//
3306
埠打開
*
echo
$PATH
*
/usr/local/mysql/bin/mysql
*
export
PATH=$PATH:/usr/local/mysql/bin
//
<span
style="color:#cc6600;">注意</span>:不加$
就僅僅剩下你添加的路徑
*
vim
/etc/profile
//
在export
之前添加下面的路徑
PATH=$PATH:/usr/local/mysql/bin
//
永久生效的路徑配置方法
*
mysql
//
此時mysql已經可啟動了
復制代碼代碼如下:
//mysql庫文件的路徑配置
*
ls
*
vim
/etc/ld.so.conf
//
修改庫文件位置
*
vim
/etc/ld.so.conf.d/mysql.conf
//
規范的配置
當前目錄下以.CONF結尾都可以配置
*
ldconfig
-v
|
grep
mysql
//
重新載入所有庫文件的路徑
沒有mysql的庫文件
vim
/etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
//
新建mysql.conf
文件
在文件中添加這些內容
*
ldconfig
-v
|
grep
mysql
//
修改之後在重新載入一次
否則伺服器不知道
//mysql庫文件的路徑配置
*
ls
*
vim
/etc/ld.so.conf
//
修改庫文件位置
*
vim
/etc/ld.so.conf.d/mysql.conf
//
規范的配置
當前目錄下以.CONF結尾都可以配置
*
ldconfig
-v
|
grep
mysql
//
重新載入所有庫文件的路徑
沒有mysql的庫文件
vim
/etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
//
新建mysql.conf
文件
在文件中添加這些內容
*
ldconfig
-v
|
grep
mysql
//
修改之後在重新載入一次
否則伺服器不知道
復制代碼代碼如下:
//頭文件的配置
庫文件有哪些函數以及函數在別人編寫程序的時候怎麼調用
怎麼傳遞參數
參數類型是什麼
返回值類型是是什麼
必須找到庫文件所對應的頭文件
庫文件對應的頭文件在/
usr/include
*
ls
/usr/include/
*
ln
-sv
/usr/local/mysql/include
/usr/include/mysql
//
頭文件的輸出
*
vim
/etc/man
*
vim
/etc/man.config
//
添加Man
MANPATH
/usr/local/mysql/man
OK!
mysql
配置成功---
⑦ linux中cp命令如何用 C語言實現
1,首先需要了解cp的原理。
2,可以參考cp的源碼去了解其原理
3,cp命令的源碼可以在linux內核中找到。
4,或者下載busybox其中也會有cp的源碼
只有了解其原理之後才能談如何實現。參考代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<string.h>
#defineBUF_SIZE1024
#definePATH_LEN128
voidmy_err(char*err_string,intline)
{
fprintf(stderr,"line:%d",line);
perror(err_string);
exit(1);
}
void_data(constintfrd,constintfwd)
{
intread_len=0,write_len=0;
unsignedcharbuf[BUF_SIZE],*p_buf;
while((read_len=read(frd,buf,BUF_SIZE))){
if(-1==read_len){
my_err("Readerror",__LINE__);
}
elseif(read_len>0){//把讀取部分寫入目標文件
p_buf=buf;
while((write_len=write(fwd,p_buf,read_len))){
if(write_len==read_len){
break;
}
elseif(write_len>0){//只寫入部分
p_buf+=write_len;
read_len-=write_len;
}
elseif(-1==write_len){
my_err("Writeerror",__LINE__);
}
}
if(-1==write_len)break;
}
}
}
intmain(intargc,char**argv)
{
intfrd,fwd;//讀寫文件描述符
intlen=0;
char*pSrc,*pDes;//分別指向源文件路徑和目標文件路徑
structstatsrc_st,des_st;
if(argc<3){
printf("用法./MyCp<源文件路徑><目標文件路徑> ");
my_err("argumentserror",__LINE__);
}
frd=open(argv[1],O_RDONLY);
if(frd==-1){
my_err("Cannotopnefile",__LINE__);
}
if(fstat(frd,&src_st)==-1){
my_err("staterror",__LINE__);
}
/*檢查源文件路徑是否是目錄*/
if(S_ISDIR(src_st.st_mode)){
my_err("略過目錄",__LINE__);
}
pDes=argv[2];
stat(argv[2],&des_st);
if(S_ISDIR(des_st.st_mode)){//目標路徑是目錄,則使用源文件的文件名
len=strlen(argv[1]);
pSrc=argv[1]+(len-1);//指向最後一個字元
/*先找出源文件的文件名*/
while(pSrc>=argv[1]&&*pSrc!='/'){
pSrc--;
}
pSrc++;//指向源文件名
len=strlen(argv[2]);
//.表示復制到當前工作目錄
if(1==len&&'.'==*(argv[2])){
len=0;//沒有申請空間,後面就不用釋放
pDes=pSrc;
}
else{//復制到某目錄下,使用源文件名
pDes=(char*)malloc(sizeof(char)*PATH_LEN);
if(NULL==pDes){
my_err("mallocerror",__LINE__);
}
strcpy(pDes,argv[2]);
if(*(pDes+(len-1))!='/'){//目錄缺少最後的'/',則補上』/『
strcat(pDes,"/");
}
strcat(pDes+len,pSrc);
}
}
/*打開目標文件,使許可權與源文件相同*/
fwd=open(pDes,O_WRONLY|O_CREAT|O_TRUNC,src_st.st_mode);
if(fwd==-1){
my_err("Cannotcreatfile",__LINE__);
}
_data(frd,fwd);
//puts("endof");
if(len>0&&pDes!=NULL)
free(pDes);
close(frd);
close(fwd);
return0;
}
⑧ linux中的一些常用命令,比如ls、mv、cp等的源代碼在linux 內核源碼樹的什麼目錄什麼文件中啊
linux的這些常用命令的源代碼是不會在內核中的。這些是應用程序而已,所以你還是不要在內核中去找了。網上有這些應用程序的源代碼。
⑨ CP商業源碼哪裡可以免費下載先謝謝各位了。
網路搜V3源碼 上V3源碼論壇
最新最好的B C S S C商業源碼下載