اكتشاف تغييرات الملف في GO باستخدام استطلاع الحالة
على الرغم من أن GO لا تقدم مكافئًا مباشرًا لوظيفة UNIX FCNTL () لإخطارات تغيير الملف ، فإن استطلاع الحالة يوفر حلًا متقاطعًا:initialStat ، ERR: = OS.Stat (FilePath) إذا خطأ! = لا شيء { إرجاع خطأ } ل { STAT ، ERR: = OS.STAT (FilePath) إذا خطأ! = لا شيء { إرجاع خطأ } إذا stat.size ()! = initialStat.size () || Stat.Modtime ()! = initialStat.Modtime () { استراحة } time.sleep (1 * time.second) } العودة لا شيء }
func watchFile(filePath string) error { initialStat, err := os.Stat(filePath) if err != nil { return err } for { stat, err := os.Stat(filePath) if err != nil { return err } if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() { break } time.Sleep(1 * time.Second) } return nil }
donechan Go Func (Donechan Chan Bool) { تأجيل func () { Duechan
doneChan := make(chan bool) go func(doneChan chan bool) { defer func() { doneChan
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3