Membetulkan Isu "Bad File Descriptor" dalam Go Log Routine
Apabila menghadapi ralat "bad file descriptor" semasa melampirkan pada fail log dalam rutin Go, adalah penting untuk menyiasat punca asas. Ralat menunjukkan bahawa deskriptor fail tidak sah atau tidak sesuai untuk operasi yang dimaksudkan.
Dalam kes khusus ini, isu ini berpunca daripada pengabaian untuk menentukan bendera yang sesuai semasa membuka fail log. Secara lalai, fungsi os.OpenFile Go membuka fail dalam mod baca sahaja, oleh itu ralat "deskriptor fail buruk" semasa cuba menulis kepadanya.
Penyelesaian terletak pada penambahan bendera O_WRONLY pada os. Panggilan OpenFile. Bendera ini menunjukkan bahawa fail harus dibuka untuk menulis, memastikan bahawa deskriptor fail yang diperoleh adalah sah untuk operasi menulis. Berikut ialah kod yang diperbetulkan:
if f, err := os.OpenFile("./log.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend); err != nil { /*[...]*/ }
Dengan memasukkan bendera O_WRONLY, rutin Go boleh berjaya membuka fail log untuk menulis dan menambah mesej log tanpa menghadapi ralat "deskriptor fail buruk".
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Deskriptor Fail Buruk' dalam Rutin Pengelogan Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!