Цорт - Tsort

tsort
Бастапқы шығарылым1979; 41 жыл бұрын (1979)
Операциялық жүйеUnix, Unix тәрізді, V, Тозақ
ТүріПәрмен

The tsort бағдарлама - бұл пәрмен жолы утилита қосулы Unix және Unix тәрізді а орындайтын платформалар топологиялық сұрыптау оның кірісінде. 2017 жылғы жағдай бойынша, бұл POSIX.1 стандарт.[1]

Тарих

Оған сәйкес ақпарат[2] бет, бұл пәрмен бастапқыда мүмкіндік беретін объектілік файлдарға тапсырыс беру үшін жазылған байланыстырушы оларды дәйекті түрде өңдеу (әрқайсысы дәл бір рет және ретімен). FreeBSD нұсқаулық беті пайда болған күнінен басталады 7-нұсқа Unix.[3]

Келесі сипаттама мінез-құлықты сипаттайтындығын ескеріңіз FreeBSD цортты енгізу және олар болуы мүмкін GNU мүмкіндіктерін атап өту. Басқа бағдарламалар немесе нұсқалар өзгеше болуы мүмкін.

Синтаксис

tsort [-dlq] [FILE]

FreeBSD опциялары:

-d ең ұзақ циклды іздеуді және көрсетуді түзетуді қосыңыз-q Циклдар туралы ақпараттық хабарламаларды көрсетпеңіз.

GNU тек келесі опцияларды ұсынады:

- дисплей туралы анықтама хабары мен шығу - нұсқа нұсқасын көрсету және шығу

POSIX нұсқасы жоқ.

Мінез-құлық

tsort оның кірісін оқиды (берілген FILE ішінен немесе стандартты енгізу егер кіріс файлы берілмесе немесе '-') FILE үшін жартылай жолдар түрінде, жартылай реті көрсетілген бос орындармен бөлінген. Шығу - берілген ішінара тапсырыс беруге сәйкес келетін жалпы тапсырыс.[4]

Басқаша айтқанда: а бағытталған ациклдік график (а ретінде қолданылады тәуелділік графигі ), tsort барлық тізбектер үшін 'a-> b', 'a' тізімде 'b' -ден бұрын болатындай етіп, аудармалардың тізімін жасайды.

Мысалдар

tsort а шыңдарын тізімдейді бағытталған ациклдік график барлық тапсырыс / бағыт қатынастары сақталатын тәртіпте:

$ tsort << EOF> 3 8> 3 10> 5 11> 7 8> 7 11> 8 9> 11 2> 11 9> 11 10> EOF3571181029
үлгі ДАГ

Шақыру графигі

tsort бастапқы файлдағы функцияларды қолданар алдында мүмкіндігінше көп анықталатын етіп қайта құруға көмектесе алады (келесіні түсіндіріңіз: негізгі () қоңыраулар parse_options (), tail_file () және tail_forever (); tail_file () қоңыраулар әдемі_ат (), және тағы басқа. Нәтиже сол dump_remainder () алдымен анықтау керек, бастапқы_желі () екінші және т.б.):

$ мысықтарды шақыру графигінегізгі талдау_параметрлерінегізгі құйрық_файлымәңгіқұйрық_файлы әдемі_атtail_file write_headerқұйрық_файл құйрыққұйрық_қайта тексеруқұйрық_мәңгілікке әдемі_атмәңгі жазу_қолданбасықұйрық_мәңгі қоқыс_қалғанқұйрық сызықтарықұйрық_байтыартқы сызықтарқұйрық_ сызықтарыfile_lines сызықтарықұбыр сызықтарықұйрық_байты xlseekқұйрық_байты_ басталуықұйрық_байты қоқыс_қалғанҚұйрық_байтыfile_lines dump_remainderpretty_name қайта тексеріңіз
$ # ескерту: 'tac' тапсырысты кері қайтарады$ tsort call-графы | tacқоқыс_қалғанбастапқы_желіfile_linesқұбыр сызықтарыxlseekбастапқы_байтқұбыр_байтыартқы сызықтарқұйрық_байтыәдемі_атжазу_тақырыпқұйрыққайта тексеруталдау параметрлеріқұйрық_файлымәңгінегізгі

Кітапхана

Дәстүрлі лд (Unix linker) кітапхананың кірістерін топологиялық ретпен сұрыптауды талап етеді, өйткені ол файлдарды бір жолда өңдейді. Бұл статикалық кітапханаларға да қатысты (* .a) және динамикалық кітапханалар (* .so), ал статикалық кітапханаларға қатысты жеке объектілік файлдар үшін жақсырақ.[5]

BSD UNIX цортты әдеттегі бөлік ретінде қолданады ар & ranlib командалық шақырулар (/usr/share/mk/bsd.lib.mk сайтынан):

lib $ {LIB} .a: ${OBJS} ${STATICOBJS}    @${ECHO} статикалық ғимарат ${LIB} кітапхана    @${AR} cq ${.TARGET} `жиек ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}    ${РАНЛИБ} ${.TARGET}

Мұнда жиек («кітапханаға тапсырыс») символдар кестесін тексеру арқылы файл аралық тәуелділік тізімін құру үшін қолданылады.

Пайдалану туралы ескертулер

Ақ кеңістікті бөлгіштердің өзара ауыстырымдылығына назар аударыңыз, сондықтан келесі кірістер баламалы болады:

bb c
а б
ab b c
a b b c
ABBC

Бірдей заттардың жұптары шыңның бар екендігін көрсетеді, бірақ тапсырыс бермейді (сондықтан келесі шеттері жоқ бір шыңды білдіреді):

a a

Біреуді немесе бірнешеуін қамтитын графиктің топологиялық реті жоқ циклдар. Алайда tsort ескертуді, ал GNU tsort ескертуді басып шығарады анықталған циклдар дейін стандартты қате ('tsort:' басталатын жолдар):

$ tsort << EOF> а б> b c> c a> EOFUX: tsort: INFORM: мәліметтер цикліtsort: аtsort: btsort: cабc

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «tsort». Ашық топтық сипаттамалар 2018 жылғы 7 шығарылым. Ашық топ.
  2. ^ https://www.gnu.org/software/coreutils/manual/html_node/tsort-background.html
  3. ^ http://www.freebsd.org/cgi/man.cgi?query=tsort
  4. ^ https://www.gnu.org/software/coreutils/manual/html_node/tsort-invocation.html
  5. ^ «c ++ - gcc ld: статикалық кітапханалардың сілтемесін анықтау әдісі». Stack overflow.

Әрі қарай оқу

Сыртқы сілтемелер

tsort бетінің нұсқаулығы