亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 既然系統(tǒng)頭文件定義了PATH_MAX之類的宏,為什么還要sysconf去動(dòng)態(tài)得到呢? [打印本頁]

作者: sentto2    時(shí)間: 2015-04-28 19:01
標(biāo)題: 既然系統(tǒng)頭文件定義了PATH_MAX之類的宏,為什么還要sysconf去動(dòng)態(tài)得到呢?
APUE里面說,系統(tǒng)定義的最大路經(jīng)長(zhǎng)度等數(shù)值,需要通過sysconf調(diào)用去得到。
那么我的問題是,頭文件里面我們已經(jīng)定義了PATH_MAX之類的宏可以直接用的,編譯時(shí)就已經(jīng)知道了。

為什么還需要在運(yùn)行時(shí)動(dòng)態(tài)的調(diào)用sysconf去得到最大路徑長(zhǎng)度呢?
難道這兩個(gè)值可以不一樣? 如果可以不一樣的話,什么情況下用哪一個(gè)?
作者: zsszss0000    時(shí)間: 2015-04-28 19:01
因?yàn)橄到y(tǒng)限制和選項(xiàng)會(huì)影響應(yīng)用程序的行為,所以可移植的程序需要獲取
1在編譯的時(shí)候,能夠獲取一些,比如int類型的最大數(shù)值
2另外一些可能再程序運(yùn)行的時(shí)候發(fā)生變化,所以需要調(diào)用這樣的函數(shù)去sysconf去在運(yùn)行的時(shí)候獲取

比如路徑名變量值,如NAME_MAX,這個(gè)變量不僅僅可能不同的文件系統(tǒng),也不一樣,所以應(yīng)用程序應(yīng)該
主動(dòng)去獲取。


回復(fù) 6# sentto2


   
作者: zsszss0000    時(shí)間: 2015-04-28 19:19
編譯時(shí),是可以知道的,但是如果在運(yùn)行的時(shí)候確定的話,也可以選擇sysconf或者pathconf或者fpathconf這樣的函數(shù)
作者: sentto2    時(shí)間: 2015-04-28 21:01
zsszss0000 發(fā)表于 2015-04-28 19:19
編譯時(shí),是可以知道的,但是如果在運(yùn)行的時(shí)候確定的話,也可以選擇sysconf或者pathconf或者fpathconf這樣的 ...


我的意思是,既然已經(jīng)有了編譯時(shí)可以用的宏,為什么還要有sysconf之類的函數(shù)呢?
作者: zsszss0000    時(shí)間: 2015-04-28 21:56
為了在運(yùn)行時(shí)獲取回復(fù) 3# sentto2


   
作者: zsszss0000    時(shí)間: 2015-04-29 09:23
閱讀Linux/unix系統(tǒng)編程手冊(cè) 11章 對(duì)這一部分進(jìn)行了描述
作者: sentto2    時(shí)間: 2015-04-29 09:28
zsszss0000 發(fā)表于 2015-04-29 09:23
閱讀Linux/unix系統(tǒng)編程手冊(cè) 11章 對(duì)這一部分進(jìn)行了描述


我的問題是,既然編譯的時(shí)候就有這個(gè)宏了,干嘛還要運(yùn)行時(shí)去獲取呢?
好像ulimit之類的命令并不能在系統(tǒng)啟動(dòng)以后,去動(dòng)態(tài)的改變"最大的路徑長(zhǎng)度"這一類的參數(shù)吧?
作者: sentto2    時(shí)間: 2015-04-29 16:08
zsszss0000 發(fā)表于 2015-04-29 15:34
因?yàn)橄到y(tǒng)限制和選項(xiàng)會(huì)影響應(yīng)用程序的行為,所以可移植的程序需要獲取
1在編譯的時(shí)候,能夠獲取一些,比如i ...


嗯,你提醒我了,如果linux掛在一個(gè)sd卡,是FAT文件系統(tǒng)的話,最大的文件名長(zhǎng)度就是8個(gè)字符。
所以必須運(yùn)行時(shí)獲。

醍醐灌頂了!
作者: zsszss0000    時(shí)間: 2015-04-29 16:10
其實(shí)我也不懂,只不過書上是那么寫的,就去查了一下書而已回復(fù) 8# sentto2


   
作者: bfdhczw    時(shí)間: 2015-04-29 16:57
如果你在你自己的電腦上編譯,但是要在別人的電腦上運(yùn)行呢?

你怎么知道你們兩個(gè)的系統(tǒng)在編譯時(shí)使用的PATH_MAX值一定相同?
作者: sentto2    時(shí)間: 2015-04-29 18:09
bfdhczw 發(fā)表于 2015-04-29 16:57
如果你在你自己的電腦上編譯,但是要在別人的電腦上運(yùn)行呢?

你怎么知道你們兩個(gè)的系統(tǒng)在編譯時(shí)使用的PA ...

好點(diǎn)子!




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2