linuxのlsコマンドのオプションなしの場合、出力結果の1つのファイルが二つの行に分かれてしまうことがないです。これを実現するためには、端末のサイズ内にファイル名が収まるかという判定が必要になります。どうやって端末のサイズを取得するのかという疑問が浮かんだので、調べて見ました。以下は端末サイズを取得するためだけのサンプルです。
c
#include <sys/ioctl.h>
#include <unistd.h>
static size_t line_length = 80;
int main( int argc, char *argv[] )
{
struct winsize ws;
// get terminal size
if( ioctl( STDOUT_FILENO, TIOCGWINSZ, &ws ) != -1 ) {
printf("terminal_width =%d\n", ws.ws_col);
printf("terminal_height =%d\n", ws.ws_row);
if( 0 < ws.ws_col && ws.ws_col == (size_t)ws.ws_col ) {
line_length = ws.ws_col;
}
}
return 0;
}