cstream - ອອນລາຍໃນຄລາວ

ນີ້ແມ່ນຄໍາສັ່ງ cstream ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


ສາຍນ້ ຳ — ສາຍ​ນ​້​ໍ​ຂໍ້​ມູນ​ໂດຍ​ກົງ​, ມີ​ການ​ຈໍາ​ກັດ​ແບນ​ວິດ​, FIFO​, ສຽງ​, ຊໍ້າ​ຊ້ອນ​ແລະ​
ການ​ເສີມ​ຂະ​ຫຍາຍ​ການ​ລາຍ​ງານ​ສະ​ຫນັບ​ສະ​ຫນູນ​.

ສະຫຼຸບສັງລວມ


ສາຍນ້ ຳ [-b num] [-B num] [-i ຊື່​ເອ​ກະ​ສານ] [-I string] [-l] [-n num] [-o ຊື່​ເອ​ກະ​ສານ] [-O string]
[-p ຊື່​ເອ​ກະ​ສານ] [-t num] [-T num] [-v num] [-V] [ຊື່​ເອ​ກະ​ສານ]

ລາຍລະອຽດ


Cstream ການກັ່ນຕອງການຖ່າຍທອດຂໍ້ມູນ, ຄືກັນກັບເຄື່ອງມື UNIX dd(1). ມັນມີແບບດັ້ງເດີມຫຼາຍ
syntax ເສັ້ນຄໍາສັ່ງ, ສະຫນັບສະຫນູນການຈໍາກັດແບນວິດທີ່ຊັດເຈນແລະການລາຍງານແລະການສະຫນັບສະຫນູນສໍາລັບ
FIFOs. ຂໍ້​ຈໍາ​ກັດ​ຂໍ້​ມູນ​ແລະ​ການ​ຄິດ​ໄລ່​ອັດ​ຕາ​ການ​ຜ່ານ​ຈະ​ເຮັດ​ວຽກ​ສໍາ​ລັບ​ໄຟລ​໌​> 4 GB​.

Cstream ອ່ານຈາກວັດສະດຸປ້ອນມາດຕະຖານ ແລະຂຽນໃສ່ຜົນໄດ້ຮັບມາດຕະຖານ, ຖ້າບໍ່ມີຊື່ໄຟລ໌
ມອບໃຫ້. ມັນຍັງຈະ 'ສ້າງ' ຫຼື 'ຈົມ' ຂໍ້ມູນຖ້າຕ້ອງການ.

ຕົວເລືອກ:

-b num ກໍານົດຂະຫນາດບລັອກທີ່ໃຊ້ສໍາລັບການອ່ານ / ຂຽນ num. ຄ່າເລີ່ມຕົ້ນແມ່ນ 8192 bytes.

-B num Buffer input ເຖິງ num bytes ກ່ອນທີ່ຈະຂຽນ. ຄ່າເລີ່ມຕົ້ນແມ່ນຂະຫນາດຕັນ. ມັນ​ແມ່ນ
ເກີດຄວາມຜິດພາດໃນການຕັ້ງອັນນີ້ໃສ່ອັນໃດອັນໜຶ່ງທີ່ຢູ່ຂ້າງລຸ່ມຂອງຂະໜາດບລັອກ. ມີປະໂຫຍດໃນເວລາຂຽນເທບ
ແລະຄ້າຍຄືກັນທີ່ມັກການຂຽນຂະຫນາດໃຫຍ່ຈໍານວນຫນ້ອຍຂອງຂະຫນາດນ້ອຍຫຼາຍ.

-c num ການດໍາເນີນງານພ້ອມໆກັນ. ໃຊ້ຂະບວນການແຍກຕ່າງຫາກສໍາລັບຜົນຜະລິດ. ນີ້ແມ່ນເປັນປະໂຫຍດໂດຍສະເພາະ
ປະສົມປະສານກັບທາງເລືອກ -B.
0 = ໃຊ້ຂະບວນການດຽວເທົ່ານັ້ນ (ຄ່າເລີ່ມຕົ້ນ)
1 = ຂະບວນການອ່ານຈະ buffer
2 = ຂະບວນການຂຽນຈະ buffer
3 = ຂະບວນການທັງສອງຈະ buffer.
ໃນການປະສົມປະສານກັບຂະຫນາດ buffer ຂະຫນາດໃຫຍ່ນີ້ມັກຈະໂຫລດຫນ່ວຍຄວາມຈໍາຂອງທ່ານ
ຢ່າງຮຸນແຮງ, ທຸກໆຄັ້ງທີ່ຜູ້ອ່ານໂອນ buffer ທີ່ມັນເກັບກໍາໄປຫາ
ນັກຂຽນ. ຖ້າທ່ານໃຊ້ -c 3 ແລະມີຂະຫນາດ buffer 128 Megabytes 256 MB ຂອງ
ຄວາມຊົງຈໍາຈະຖືກສໍາພັດໃນເວລາດຽວກັນ.

-i num

-o num ກໍານົດຊື່ໄຟລ໌ທີ່ຈະໃຊ້ສໍາລັບການປ້ອນຂໍ້ມູນຫຼືຜົນຜະລິດ, ຕາມລໍາດັບ. ຖ້າຫາກວ່າໄຟລ໌ຜົນຜະລິດ
ຊື່ແມ່ນ "-", ຂໍ້ມູນພຽງແຕ່ຈະຖືກຍົກເລີກ. ຖ້າຊື່ໄຟລ໌ທີ່ປ້ອນເຂົ້າແມ່ນ "-", ຂໍ້ມູນຈະ
ຈະຖືກຜະລິດ 'ອອກຈາກຊ່ອງຫວ່າງ'. ຖ້າຕົວເລືອກເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກມອບໃຫ້, stdin/stout ຈະເປັນ
ໃຊ້. ຖ້າທ່ານຕ້ອງການໃຫ້ -o or -i ທາງເລືອກແລະຕ້ອງການ stdin / stdout, ລະບຸ
string ເປົ່າ, ແບບນີ້:

cstream -i''

ຖ້າການສະຫນັບສະຫນູນ TCP ໄດ້ຖືກລວບລວມຢູ່ໃນ (ຄ່າເລີ່ມຕົ້ນ), hostname:portnumber ຈະພະຍາຍາມ
ເຊື່ອມຕໍ່ກັບໂຮດທີ່ລະບຸໄວ້ໃນພອດທີ່ລະບຸໄວ້ແລະ :portnumber ຈະເປີດ a
ເຕົ້າຮັບ TCP ໃນເຄື່ອງທ້ອງຖິ່ນແລະລໍຖ້າການເຊື່ອມຕໍ່ມາຮອດ. ຄວາມປອດໄພ
ໝາຍເຫດ: cstream ບໍ່ມີກົນໄກການຈຳກັດ hosts ທີ່ອາດຈະເຊື່ອມຕໍ່ກັບອັນນີ້
ທ່າເຮືອ. ເວັ້ນເສຍແຕ່ວ່າເຄື່ອງຂອງທ່ານມີຕົວກອງເຄືອຂ່າຍອື່ນ, ທຸກຄົນຈະສາມາດ
ເຊື່ອມຕໍ່.

-I string

-O string
ລະບຸປະເພດຂອງໄຟລ໌ປ້ອນຂໍ້ມູນ ແລະຜົນຜະລິດຕາມລໍາດັບ.
ຖ້າສາຍ
ປະກອບມີ 'f', fifo ຈະຖືກສ້າງຂື້ນ.
ຖ້າສາຍ
ປະກອບມີ 'a', ໄຟລ໌ຈະຖືກສົມມຸດວ່າເປັນສຽງທີ່ເຂົ້າກັນໄດ້ກັບ opensound
ອຸ​ປະ​ກອນ​ແລະ​ຈະ​ໄດ້​ຮັບ​ການ​ສະ​ຫຼັບ​ກັບ​ການ​ຕັ້ງ​ຄ່າ​ຄ້າຍ​ຄື CD​.
ຖ້າສາຍ
ປະ​ກອບ​ມີ 't​'​, ສໍາ​ເນົາ​ຂອງ​ນ​້​ໍ​າ​ຈະ​ຖືກ​ສົ່ງ​ໄປ​ຫາ​ຕົວ​ອະ​ທິ​ບາຍ​ໄຟລ​໌ 3​.
ຖ້າສາຍ
ປະກອບມີ 'N', TCP ຈະບໍ່ຖືກໃຊ້ສໍາລັບໄຟລ໌ນັ້ນເຖິງແມ່ນວ່າຊື່ມີ ":".

-l ລວມມີການນັບແຖວໃນສະຖິຕິ.

-n num ຈໍາ​ກັດ​ຈໍາ​ນວນ​ທັງ​ຫມົດ​ຂອງ​ຂໍ້​ມູນ​ທີ່​ num. ຖ້າມີການປ້ອນຂໍ້ມູນເພີ່ມເຕີມ, ມັນຈະມີ
ຖືກ​ຍົກ​ເລີກ​, ສາຍນ້ ຳ ຈະ​ອອກ​ຫຼັງ​ຈາກ​ທີ່​ໄດ້​ກໍາ​ນົດ​ໄວ້​. ຖ້າມີຫນ້ອຍ
input, ຂີດຈໍາກັດຈະບໍ່ບັນລຸແລະບໍ່ມີຂໍ້ຜິດພາດຈະຖືກສົ່ງສັນຍານ.

num ອາດຈະມີ 'k', 'm' ຫຼື 'g' ຕໍ່ໄປເຊິ່ງຫມາຍຄວາມວ່າ Kilobytes, Megabytes ຫຼື
Gigabyte (ທີ່ Kilo = 1024). ນີ້ໃຊ້ກັບຕົວເລືອກຕົວເລກທັງໝົດ.

-p ຊື່​ເອ​ກະ​ສານ
ຂຽນ id ຂະບວນການຂອງ cstream ກັບ ຊື່​ເອ​ກະ​ສານ. ຖ້າ cstream ໃຊ້ຕົວຂຽນແຍກຕ່າງຫາກ
ຂະບວນການ (ທາງເລືອກ -c), ນີ້ແມ່ນ pid ຂອງຂະບວນການພໍ່ແມ່ (ຜູ້ອ່ານ).

-t num ຈໍາ​ກັດ​ການ​ຜ່ານ​ຂອງ​ນ​້​ໍ​າ​ຂໍ້​ມູນ​ທີ່​ num bytes/ວິນາທີ. ການຈໍາກັດແມ່ນເຮັດຢູ່ທີ່
ດ້ານການປ້ອນຂໍ້ມູນ, ທ່ານສາມາດອີງໃສ່ cstream ບໍ່ຍອມຮັບຫຼາຍກ່ວາອັດຕານີ້. ຖ້າ
ຕົວເລກທີ່ທ່ານໃຫ້ແມ່ນບວກ, cstream ສະສົມຄວາມຜິດພາດແລະພະຍາຍາມຮັກສາ
ອັດຕາລວມຢູ່ໃນມູນຄ່າທີ່ລະບຸ, ສໍາລັບກອງປະຊຸມທັງຫມົດ. ຖ້າທ່ານໃຫ້ທາງລົບ
ຈໍາ​ນວນ​, ມັນ​ເປັນ​ຂໍ້​ຈໍາ​ກັດ​ສູງ​ສຸດ​ສໍາ​ລັບ​ການ​ອ່ານ / ຂຽນ​ແຕ່​ລະ​ຄູ່​ໂທ​ລະ​ບົບ​. ໃນຄໍາສັບຕ່າງໆອື່ນໆ:
ຈໍານວນລົບຈະບໍ່ເກີນຂອບເຂດຈໍາກັດນັ້ນ, ຈໍານວນບວກຈະເກີນ
ມັນເພື່ອເຮັດໃຫ້ດີສໍາລັບການ underutilization ທີ່ຜ່ານມາ.

-T num ລາຍງານການສົ່ງຜ່ານທຸກວິນາທີ.

-v num ກໍານົດລະດັບ verbose ເປັນ num. ໂດຍຄ່າເລີ່ມຕົ້ນ, ມັນຖືກກໍານົດເປັນ 0, ຊຶ່ງຫມາຍຄວາມວ່າບໍ່ມີຂໍ້ຄວາມໃດໆ
ສະແດງຕາບໃດທີ່ບໍ່ມີຂໍ້ຜິດພາດເກີດຂຶ້ນ. ຄ່າຂອງ 1 ຫມາຍຄວາມວ່າຈໍານວນຂໍ້ມູນທັງຫມົດ
ແລະ throughput ຈະຖືກສະແດງໃນຕອນທ້າຍຂອງການດໍາເນີນໂຄງການ. ຄ່າຂອງ 2 ຫມາຍຄວາມວ່າ
ອັດຕາການໂອນເງິນນັບຕັ້ງແຕ່ການສິ້ນສຸດຂອງຄູ່ອ່ານ / ຂຽນຄັ້ງທໍາອິດຈະຖືກລາຍງານ
(ເປັນປະໂຫຍດເມື່ອມີການຊັກຊ້າເບື້ອງຕົ້ນ). ຄ່າຂອງ 3 ຫມາຍຄວາມວ່າຈະມີ
ການວັດແທກແຍກຕ່າງຫາກສໍາລັບການອ່ານແລະຂຽນ. ທາງເລືອກນີ້ແມ່ນການບໍລິໂພກຊັບພະຍາກອນແລະ
ໃນປັດຈຸບັນບໍ່ໄດ້ປະຕິບັດ. ຄ່າຂອງ 4 ໝາຍ ຄວາມວ່າແຈ້ງການກ່ຽວກັບແຕ່ລະອັນ
ອ່ານ / ຂຽນຈະສະແດງ. ຄຸນຄ່າສູງລວມມີຂໍ້ຄວາມທຸກປະເພດຂອງຕ່ໍາ
ຄ່າ.

-V ພິມໝາຍເລກເວີຊັນເພື່ອ stdout ແລະອອກດ້ວຍ 0.

ຊື່​ເອ​ກະ​ສານ ຊື່ໄຟລ໌ດຽວເປັນອາກິວເມັນສຸດທ້າຍໂດຍບໍ່ມີການປ່ຽນທາງເລືອກຈະຖືກໃຊ້ເປັນ
input file ຖ້າ -i ບໍ່ໄດ້ຖືກນໍາໃຊ້.

SIGUSR1

ເຂົ້າສູ່ລະບົບ ການສົ່ງ SIGUSR1 (ຫຼື SIGINFO, ເຊິ່ງປົກກະຕິແລ້ວແມ່ນແຜນທີ່ກັບ Control-T ໃນແປ້ນພິມຂອງທ່ານ)
ກັບ cstream ເຮັດໃຫ້ມັນສະແດງອັດຕາການສົ່ງຜ່ານໄປຫາ stderr. ກະແສຈະ
ສືບຕໍ່ຄືກັບວ່າບໍ່ມີຫຍັງເກີດຂຶ້ນ.

SIGUSR2 ອອກຈາກແລະລາຍງານອັດຕາການສົ່ງຜ່ານ, ຖ້າຮ້ອງຂໍ.

ຕິດຕາມ ຂ້ອຍພົບວ່າຕົນເອງສົ່ງ SIGHUP ໂດຍບັງເອີນເລື້ອຍໆເກີນໄປ. ແຕ່ບໍ່ສົນໃຈຫຼືໃຊ້ໃນທາງທີ່ຜິດ
SIGHUP ບໍ່ແມ່ນທາງເລືອກສໍາລັບຂ້ອຍ. ດັ່ງນັ້ນ, ເມື່ອ ສາຍນ້ ຳ ໄດ້ຮັບ SIGHUP, ມັນຈະລໍຖ້າ 5
ວິນາທີສໍາລັບ SIGHUP ອື່ນ, ເພື່ອໃຫ້ຜູ້ໃຊ້ໂອກາດທີ່ຈະແກ້ໄຂຄວາມຜິດພາດທີ່ເປັນໄປໄດ້.
ຖ້າບໍ່ໄດ້ຮັບ SIGHUP ເພີ່ມເຕີມ, ສາຍນ້ ຳ ຂ້າຕົວເອງດ້ວຍ SIGHUP.

ຕົວຢ່າງ


ສາຍນ້ ຳ -o tmpfile -v 1 -n 384m -i -
ຂຽນຂໍ້ມູນ 384 Megabytes ຂອງຂໍ້ມູນທີ່ບໍ່ໄດ້ລະບຸໄວ້ໃນໄຟລ໌ tmpfile ແລະສະແດງ verbose
ອັດຕາການຜ່ານ. ເຮັດໃຫ້ມາດຕະຖານທີ່ດີ, ຄວາມໄວຂອງ / dev / null ແຕກຕ່າງກັນຫຼາຍຈາກ
ລະ​ບົບ​ກັບ​ລະ​ບົບ​.

ສາຍນ້ ຳ -i tmpfile -v 1 -n 384m -o -
ອ່ານໄຟລ໌ດຽວກັນກັບຄືນໄປບ່ອນໃນແລະຍົກເລີກຂໍ້ມູນ.

ສາຍນ້ ຳ -b 2000 -t 10000 / var / log / ຂໍ້ຄວາມ
ຈະສະແດງໄຟລ໌ໃນຄວາມໄວເບິ່ງຫຼາຍຫຼືຫນ້ອຍ.

dump 0sf 400000 - / | ສາຍນ້ ຳ -v 1 -b 32768 -o /dev/rst0 -p pidfile

ຂ້າ -USR1 `ແມວ pidfile`
ຂຽນຜົນໄດ້ຮັບຈາກ dump(1) ເພື່ອ tape. ແຕ່ລະຄັ້ງທີ່ສັນຍານຖືກສົ່ງ, ຜ່ານ
ແລະອັດຕາຂໍ້ມູນມາເຖິງຕອນນັ້ນຈະຖືກສະແດງ.

ສາຍນ້ ຳ -t 176400 -i /dev/dsp0 -I f -o -
ເຮັດໃຫ້ປະເພດຂອງການ emulator ສຽງບັດທີ່ອາດຈະຖືກນໍາໃຊ້ເພື່ອທົດສອບຄໍາຮ້ອງສະຫມັກສຽງທີ່
ຕ້ອງ​ການ​ບາງ​ສິ່ງ​ບາງ​ຢ່າງ​ທີ່​ຈະ​ຂຽນ​ທີ່​ຈໍາ​ກັດ​ອັດ​ຕາ​ການ​ຂໍ້​ມູນ​ເປັນ soundcard ທີ່​ແທ້​ຈິງ​ເຮັດ​ໄດ້​. ນີ້
ແນ່ນອນບໍ່ໄດ້ເຮັດວຽກເມື່ອແອັບພລິເຄຊັນພະຍາຍາມຂຽນຂໍ້ມູນໂດຍໃຊ້ ແຜນທີ່(2) ແລະ
ແອັບພລິເຄຊັນຕ້ອງບໍ່ສົນໃຈຂໍ້ຜິດພາດໃນເວລາທີ່ມັນພະຍາຍາມກໍານົດພາລາມິເຕີ soundcard ໂດຍໃຊ້
ioctls(2).

ສາຍນ້ ຳ -t 176400 -i /dev/dsp0 -I f -o /dev/dsp1 -O f
emulator soundcard ທີ່​ຄ້າຍ​ຄື​ກັນ​, ຍົກ​ເວັ້ນ​ແຕ່​ວ່າ​ມັນ​ອະ​ນຸ​ຍາດ​ໃຫ້​ທ່ານ​ເພື່ອ grab ຂໍ້​ມູນ​ຂອງ​ທ່ານ​
ແອັບພລິເຄຊັນສົ່ງໄປຫາມັນຈາກ fifo ອື່ນໆ, ໃນຂະນະທີ່ຍັງມີເວລາທີ່ຊັດເຈນ.

ສາຍນ້ ຳ -ໂອ -o /dev/dsp0 myhost.mydomain.com: 17324
ເຊື່ອມຕໍ່ພອດ 3333 ຢູ່ໃນໂຮດ myhost.mydomain.com ແລະຂໍ້ມູນໃດກໍ່ຕາມທີ່ມັນພົບເຫັນຈະ
ຖືກສົ່ງໄປຫາແຜ່ນສຽງ, ດ້ວຍການຕັ້ງຄ່າທີ່ເຫມາະສົມສໍາລັບການຫຼິ້ນສະເຕີຣອຍທີ່ມີຄຸນນະພາບ CD.

ສາຍນ້ ຳ -i myaudiofile.raw -o : 17324
ນີ້ຈະເປີດເຄື່ອງແມ່ຂ່າຍ TCP ໃນພອດ 17324 ແລະລໍຖ້າຈົນກ່ວາຜູ້ໃດຜູ້ຫນຶ່ງເຊື່ອມຕໍ່ (ສໍາລັບ
ຕົວຢ່າງ, ເສັ້ນຄໍາສັ່ງຈາກຕົວຢ່າງທີ່ຜ່ານມາ). ຫຼັງຈາກນັ້ນ, ມັນຈະສົ່ງເນື້ອໃນ
ຂອງ myaudiofile.raw ລົງກະແສ TCP (ສໍາລັບຕົວຢ່າງສຽງທີ່ຜ່ານມາ, ໂດຍປົກກະຕິ a
CD audiotrack ຄືກັບທີ່ທ່ານໄດ້ຮັບຈາກ tosha ຫຼື cdparanoia utilities).

ສາຍນ້ ຳ -OD -o ໄຟລ໌ຂອງຂ້ອຍ

ຂຽນເພື່ອຍື່ນ myfile ກັບ O_DIRECT. ມັນມັກຈະຫມາຍຄວາມວ່າລະບົບໄຟລ໌ buffer
cache ຈະບໍ່ພະຍາຍາມ cache ໄຟລ໌ນີ້. ທ່ານສາມາດນໍາໃຊ້ເພື່ອປ້ອງກັນການຄັດລອກ
ການດໍາເນີນງານຈາກການກິນອາຫານເຖິງຄວາມຊົງຈໍາທາງດ້ານຮ່າງກາຍ. ໃຫ້ສັງເກດວ່າເມື່ອ cstream ພົບ a
ຂຽນຂໍ້ຜິດພາດມັນຈະປ່ຽນໄຟລ໌ຜົນຜະລິດຈາກ O_DIRECT ໄປຫາໄຟລ໌ປົກກະຕິແລະຂຽນ
ບລັອກຕໍ່ໄປທັງໝົດໂດຍບໍ່ມີ O_DIRECT ຖ້າຂຽນໂດຍບໍ່ມີ O_DIRECT ສຳເລັດ. ໃນການປະຕິບັດ
ມັນມັກຈະຫມາຍຄວາມວ່າບລັອກສຸດທ້າຍຂອງເຈົ້າ, ຖ້າບໍ່ແມ່ນຫຼາຍຂອງບລັອກລະບົບໄຟລ໌
ຂະ​ຫນາດ​, ຍັງ​ຈະ​ໄດ້​ຮັບ​ການ​ຂຽນ​ເຂົ້າ​ໄປ​ໃນ​ໄຟລ​໌ (ຈໍາ​ນວນ​ສູງ​ສຸດ​ຂອງ​ຂໍ້​ມູນ​ທີ່​ຂຽນ​
ໂດຍບໍ່ມີການ O_DIRECT ແມ່ນ blocksize ລົບຫນຶ່ງຂອງທ່ານ). ວິທີການນັ້ນ cstream ຮັບປະກັນວ່າ
ໄຟລ​໌​ຜົນ​ຜະ​ລິດ​ມີ​ຄວາມ​ຍາວ​ຂອງ​ການ​ປ້ອນ​ຂໍ້​ມູນ​, ແນວ​ໃດ​ກໍ​ຕາມ​ແປກ​ທີ່​ຄວາມ​ຍາວ​ແມ່ນ​ແລະ​ບໍ່​ວ່າ​ຈະ​ເປັນ​
ສິ່ງ​ທີ່​ຈໍາ​ກັດ OS ຂອງ​ທ່ານ​ສະ​ຖານ​ທີ່​ກ່ຽວ​ກັບ​ການ O_DIRECT ຜົນ​ຜະ​ລິດ. ອີກເທື່ອຫນຶ່ງ, cstream ຈະ *not* pad
ຜົນຜະລິດກັບຂະຫນາດຕັນ, ທ່ານໄດ້ຮັບໄຟລ໌ດຽວກັນແລະຂະຫນາດໄຟລ໌ເປັນຖ້າຫາກວ່າບໍ່ໄດ້ໃຊ້
O_DIRECT, ໃນຄ່າໃຊ້ຈ່າຍຂອງການປ່ຽນເປັນທີ່ບໍ່ແມ່ນ O_DIRECT ທຸກຄັ້ງທີ່ບລັອກບໍ່ຖືກຕ້ອງ
ຂະຫນາດ.

ສາຍນ້ ຳ -i : 3333 | dd obs=8192 | ./cstream -omyfile -v7 -OD
ນີ້ແມ່ນສິ່ງທີ່ທ່ານຕ້ອງເຮັດເພື່ອ buffer TCP input, ດັ່ງນັ້ນ cstream ສຸດທ້າຍຈະບໍ່
ປ່ຽນອອກຈາກ O_DIRECT ກ່ອນໄວອັນຄວນເນື່ອງຈາກອ່ານສັ້ນ. ຖ້າການປ້ອນຂໍ້ມູນຂອງທ່ານສາມາດເຮັດໄດ້
ການອ່ານສັ້ນ (ເຊັ່ນ: TCP), ແລະທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າ O_DIRECT ຍັງຄົງມີຜົນ,
ທ່ານຕ້ອງການ buffer ລະຫວ່າງ TCP stream ແລະ O_DIRECT stream. ຕັ້ງແຕ່ cstream
ຍັງບໍ່ທັນຮອງຮັບການປ້ອນຂໍ້ມູນ ແລະຜົນຜະລິດຂະໜາດບລັອກທີ່ແຕກຕ່າງກັນ, dd ແມ່ນເໝາະສົມຢູ່ທີ່ນີ້.
ໃຫ້ສັງເກດວ່ານີ້ເປັນສິ່ງຈໍາເປັນພຽງແຕ່ຖ້າ OS ຕ້ອງການລະບົບໄຟລ໌ຫຼາຍ
ຂະໜາດບລັອກສຳລັບ O_DIRECT. ໃນ​ເວ​ລາ​ຂອງ​ການ​ຂຽນ​ນີ້​ການ​ກໍ່​ສ້າງ​ນີ້​ແມ່ນ​ຈໍາ​ເປັນ​ຢູ່​ໃນ​
Linux ສໍາລັບການໃຊ້ TCP streams ກັບ O_DIRECT, ແຕ່ມັນບໍ່ຈໍາເປັນໃນ FreeBSD.

ສາຍນ້ ຳ - ກະດູກ -o ໄຟລ໌ຂອງຂ້ອຍ
ຂຽນໄຟລ໌ myfile ກັບ O_SYNC. ນີ້ຫມາຍຄວາມວ່າໂດຍເວລາທີ່ການໂທລະບົບກັບຄືນມາ
ຂໍ້​ມູນ​ແມ່ນ​ເປັນ​ທີ່​ຮູ້​ຈັກ​ຢູ່​ໃນ​ແຜ່ນ​. ນີ້ບໍ່ແມ່ນສິ່ງດຽວກັນກັບ O_DIRECT. O_DIRECT
ສາມາດເຮັດ buffering ຂອງຕົນເອງໄດ້, ດ້ວຍ O_SYNC ບໍ່ມີ buffering ເລີຍ. ໃນເວລາຂອງ
ການຂຽນນີ້, O_SYNC ໃນທັງ Linux ແລະ FreeBSD ແມ່ນຊ້າຫຼາຍ (1/5 ຫາ 1/10th ຂອງ
ການຂຽນປົກກະຕິ) ແລະ O_DIRECT ແມ່ນໄວສົມຄວນ (1/4 ຫາ 1/2 ຂອງການຂຽນປົກກະຕິ). ເຈົ້າ
ສາມາດລວມ O_SYNC ແລະ O_DIRECT.

ຄວາມຜິດພາດ


ອອກຈາກລະຫັດ 0 ຫມາຍເຖິງຄວາມສໍາເລັດ.

ອອກຈາກລະຫັດ 1 ຫມາຍຄວາມວ່າມີຂໍ້ຜິດພາດໃນການນໍາໃຊ້ syntax ຂອງເສັ້ນຄໍາສັ່ງ.

ອອກຈາກລະຫັດ 2 ຫມາຍເຖິງຄວາມຜິດພາດອື່ນໆ, ໂດຍສະເພາະແມ່ນຄວາມຜິດພາດຂອງລະບົບ.

ແມງໄມ້


ຄວນມີທາງເລືອກທີ່ຈະເລີ່ມຕົ້ນຂຽນໂດຍກົງຫຼັງຈາກອ່ານທໍາອິດຈົບລົງແລະຫຼັງຈາກນັ້ນຕື່ມຂໍ້ມູນໃສ່
buffer ທີ່ມີການອ່ານຢູ່ໃນພື້ນຫລັງ. ໃນປັດຈຸບັນການຂຽນຈະບໍ່ເລີ່ມຕົ້ນກ່ອນຜູ້ອ່ານ
ໄດ້ເຕີມເຕັມ buffer ຢ່າງສົມບູນເປັນຄັ້ງທໍາອິດ.

ບໍ່ແມ່ນຂໍ້ບົກພ່ອງ: ລະຫັດທີ່ຈະເຮັດ O_DIRECT ແມ່ນມີຄວາມຊັບຊ້ອນສົມຄວນ. ມັນຈະກັບຄືນສູ່ສະພາບປົກກະຕິ
I/O ເກີດຄວາມຜິດພາດ. ແຕ່ກ່ອນທີ່ຈະເຮັດມັນຮູ້ກ່ຽວກັບຄວາມຕ້ອງການຂອງລະບົບບລັອກທັງສອງ
(ຈະເປັນຄ່າເລີ່ມຕົ້ນ I/O blocksize ໃດກໍ່ຕາມລະບົບໄຟລ໌ຂອງໄຟລ໌ຜົນຜະລິດຢູ່ໃນ) ແລະຫນ້າ
ຂໍ້ກໍານົດການຈັດຕໍາແຫນ່ງ (I/O ຈະເກີດຂຶ້ນຈາກ buffer ການຈັດຫນ້າ). ຢ່າງໃດກໍຕາມ, ໄດ້
ການປະສົມປະສານຂອງການອ່ານ/ຂຽນພ້ອມໆກັນ (-c ທາງເລືອກ) ແລະ O_DIRECT ບໍ່ໄດ້ຖືກທົດສອບເກີນກວ່າ
ການກວດສອບພື້ນຖານວ່າມັນໄດ້ຮັບການທົດສອບທີ່ຖືກຕ້ອງ.

ໃຊ້ cstream ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌