GNU/Linux >> Linux の 問題 >  >> Linux

Linux で PATH_MAX はどこで定義されていますか?

移植可能な方法は次のとおりです:

#define _POSIX_C_SOURCE 1
#include <limits.h>

仕様:https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html


linux/limits.h にあります .
#define PATH_MAX 4096 /* # chars in a path name including nul */

#include <linux/limits.h>

char current_path[PATH_MAX];

PATH_MAX このブログで言及されているように、いくつかの欠陥があります (thanks paulsm4)


PATH_MAX かどうかはまだ不明であることに注意してください。 末尾のヌル バイトの有無にかかわらず、最大長を定義します。異なるオペレーティングシステムでは、どちらか一方になる場合があります。コンパイル中にどちらのケースであるかを確認できない、または確認したくない場合は、 PATH_MAX - 1 の人為的な制限を強制する方が安全です。 .転ばぬ先の杖。 (明らかに、少なくとも PATH_MAX を予約する必要があります。 文字列をバッファリングするメモリのバイト)


Linux
  1. Linux で ssize_t はどこで定義されていますか?

  2. Linuxでプログラムがスタックしている場所を知る方法は?

  3. Linux:スワップ ファイルを配置する場所

  1. Linuxのシステム管理者は知りたがっています:私のディスクスペースはどこに行きましたか?

  2. Kali Linux 1.0.5 とソフトウェア無線

  3. ifconfig (Linux の場合) の非推奨宣言はどこにありますか?

  1. Linux –名前付きセマフォはどこに保存されますか?

  2. Linux の itoa 関数はどこにありますか?

  3. Linux は syslog をどこに保存しますか?