คำถามติดแท็ก api

8
บนระบบ Unix ทำไมเราต้อง `open () 'และ` close () `ไฟล์อย่างชัดเจนเพื่อให้สามารถอ่านไฟล์ read ()` `หรือ` write ()' ได้
ทำไมopen()และclose()มีอยู่ในการออกแบบระบบไฟล์ Unix ระบบปฏิบัติการไม่สามารถตรวจพบในครั้งแรกread()หรือwrite()ถูกเรียกและทำสิ่งใดopen()ตามปกติ

4
หลังจาก fork () เด็กจะเริ่มต้นการดำเนินการที่ใด
ฉันพยายามเรียนรู้การเขียนโปรแกรม UNIX และพบคำถามเกี่ยวกับ fork () ฉันเข้าใจว่า fork () สร้างกระบวนการที่เหมือนกันของกระบวนการที่กำลังทำงานอยู่ แต่มันเริ่มต้นที่ไหน ตัวอย่างเช่นถ้าฉันมีรหัส int main (int argc, char **argv) { int retval; printf ("This is most definitely the parent process\n"); fflush (stdout); retval = fork (); printf ("Which process printed this?\n"); return (EXIT_SUCCESS); } ผลลัพธ์คือ: นี่เป็นกระบวนการสำหรับผู้ปกครองแน่นอนที่สุดกระบวนการ ใดที่พิมพ์ออกมานี้ กระบวนการใดพิมพ์ ฉันคิดว่ามันfork()สร้างกระบวนการเดียวกันดังนั้นตอนแรกฉันก็เลยว่าในโปรแกรมนั้นการfork()โทรจะถูกเรียกซ้ำตลอดไป ฉันเดาว่ากระบวนการใหม่ที่สร้างขึ้นจากการfork()เริ่มต้นหลังจากการfork()โทร? ถ้าฉันเพิ่มรหัสต่อไปนี้เพื่อแยกความแตกต่างระหว่างกระบวนการหลักและลูก if …
22 process  c  fork  api 

6
Unix shell มีความเสถียรเพียงใด“ stdin / stdout APIs”?
grepping, awking, sedding และ piping เป็นกิจวัตรประจำวันของผู้ใช้ระบบปฏิบัติการที่คล้าย Unix อาจอยู่ในบรรทัดคำสั่งหรือภายในเชลล์สคริปต์ (เรียกรวมกันว่าตัวกรองจากนี้เป็นต้นไป) ที่สำคัญเมื่อทำงานกับโปรแกรม "มาตรฐาน" Unix CLI และเชลล์บิวด์อิน (เรียกรวมกันว่าคำสั่งต่อจากนี้ไป) ตัวกรองต้องการรูปแบบที่คาดหวังอย่างแม่นยำสำหรับ stdin, stdout และ stderr ในแต่ละขั้นตอนของตัวกรองเพื่อให้ทำงานได้อย่างถูกต้อง ฉันเรียกรูปแบบที่คาดหวังนี้ของคำสั่งบางอย่างว่า API ของคำสั่งนี้มีดังต่อไปนี้ ในฐานะที่เป็นคนที่มีพื้นฐานการพัฒนาเว็บฉันเปรียบเทียบการรวบรวมข้อมูลและการประมวลผลข้อมูลทางเทคนิคกับการขูดเว็บซึ่งเป็นเทคนิคที่ไม่แน่นอนมากเมื่อใดก็ตามที่มีการเปลี่ยนแปลงเล็กน้อยในการนำเสนอข้อมูล คำถามของฉันตอนนี้เกี่ยวข้องกับความมั่นคงของ Unix APIs คำสั่ง คำสั่งในระบบปฏิบัติการแบบ Unix ทำตามมาตรฐานอย่างเป็นทางการที่เกี่ยวข้องกับอินพุตและเอาต์พุตหรือไม่? มีกรณีในประวัติศาสตร์ที่มีการปรับปรุงคำสั่งที่สำคัญบางอย่างทำให้การทำงานของตัวกรองบางตัวที่สร้างขึ้นโดยใช้คำสั่งรุ่นเก่ากว่านั้นเสียหายหรือไม่ มีคำสั่ง Unix ที่สุกเมื่อเวลาผ่านไปซึ่งเป็นไปไม่ได้ที่จะเปลี่ยนแปลงอย่างที่ตัวกรองบางตัวสามารถแตกได้หรือไม่? ในกรณีที่ตัวกรองอาจแตกเป็นครั้งคราวเนื่องจากการเปลี่ยนคำสั่ง APIs ฉันจะเป็นนักพัฒนาป้องกันตัวกรองจากปัญหานี้ได้อย่างไร

4
ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย มันหมายถึงข้อ จำกัด ?
ฉันสังเกตว่าขึ้นอยู่กับยี่ห้อของการ์ดเครือข่ายชื่ออินเตอร์เฟสนั้นต่างกัน ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย มันหมายความว่าไม่มีเลเยอร์นามธรรมที่อธิบาย "อินเทอร์เฟซเครือข่ายทั่วไป" ในเคอร์เนลดังนั้นแต่ละไดรเวอร์จะได้รับการจัดการภายในผ่าน API ของตัวเอง (อย่างไร) มีผลกับระบบย่อยเช่นการรวมลิงก์การสร้างปริมาณข้อมูล QoS ( ALTQ ) การกรองและอื่น ๆ หรือไม่ ดูเหมือนว่าภายใต้ pfSense ฉันไม่สามารถใช้ ALTQ กับอินเตอร์เฟสเสมือนการรวมลิงก์ (LAG) นี่เป็นข้อ จำกัด ภายใน BSD เนื่องจากไม่มีเลเยอร์นามธรรมที่เหมาะสมหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.