Eu li aqui que o limite de comprimento do caminho está nos cabeçalhos do sistema. O limite de comprimento do nome do arquivo também existe. No meu sistema é o arquivo:
Mas posso facilmente criar caminhos com muito mais de 4096 caracteres. Em vez disso, veja PATH_MAXcomo um limite inferior. É garantido que você será capaz de criar caminhos tão longos, mas também poderá criar caminhos muito mais longos.
Você deve sempre usar pathconf ou alguma função como esta para obter o valor de tempo de execução sobre os itens especificados, pois esta página disse que:
Deve-se notar, no entanto, que muitos dos limites listados não são invariáveis e, em tempo de execução, o valor do limite pode diferir daqueles fornecidos neste cabeçalho, pelos seguintes motivos:
O limite depende do nome do caminho.
O limite difere entre as máquinas de compilação e de tempo de execução.
Por esses motivos, um aplicativo pode usar as funções fpathconf(), pathconf() e sysconf() para determinar o valor real de um limite em tempo de execução.
É especificado no arquivo de cabeçalho do sistema limits.h .
Aqui está um desses arquivos:
cat /usr/include/linux/limits.h
...
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
...
Aqui é onde as cópias deste arquivo estão localizadas e os valores que eles definem:
Veja a página da Wikipedia sobre comparação de sistemas de arquivos , especialmente na coluna Comprimento máximo do nome do arquivo .
Aqui estão alguns limites de comprimento de nome de arquivo em sistemas de arquivos populares:
Eu li aqui que o limite de comprimento do caminho está nos cabeçalhos do sistema. O limite de comprimento do nome do arquivo também existe. No meu sistema é o arquivo:
e C-lang define:
e mais alguns.
Refiro-me a outras respostas, por favor, vote-as.
Sim, os comprimentos do nome do arquivo e do nome do caminho são limitados por:
linux/limits.h
como indicado por sfp .Para obter dinamicamente essas propriedades:
pathconf
efpathconf
como proposto por Michael Aaron SafyanUse o comando
getconf
proposto por tim que também está disponível no Linux:E para economizar tempo (e fixá-lo na memória):
ext2, ext3, ext4, zfs: sem limites de nome de caminho; Limite de nome de arquivo de 255 bytes.
Esses são comprimentos de nome do sistema de arquivos. "linux" em si também tem alguns. Por exemplo, de bits/stdio_lim.h:
Não há como determinar o comprimento máximo dos caminhos no Linux de maneira portátil. No meu sistema:
Mas posso facilmente criar caminhos com muito mais de 4096 caracteres. Em vez disso, veja
PATH_MAX
como um limite inferior. É garantido que você será capaz de criar caminhos tão longos, mas também poderá criar caminhos muito mais longos.Você deve sempre usar pathconf ou alguma função como esta para obter o valor de tempo de execução sobre os itens especificados, pois esta página disse que:
É especificado no arquivo de cabeçalho do sistema limits.h .
Aqui está um desses arquivos:
Aqui é onde as cópias deste arquivo estão localizadas e os valores que eles definem:
Resultado: