تعزيز نظام الملفات التي تم إنشاؤها على Linux استبدال "/" بـ ""

StackOverflow https://stackoverflow.com/questions/1960075

سؤال

عند استخدام وظيفة Boost FileSystem التي تم إنشاؤها (و CreatedIractories) في المثال التالي ، "/" يتم استبدال "".

boost::filesystem::path path ("/data/configSet");
boost::filesystem::create_directory(path);

ينتج هذا الرمز Snupped دليلًا يسمى "Data configset" ، بدلاً من إنشاء دليل فرعي لـ "configset" داخل "البيانات". تحدث نفس المشكلة باستخدام createdIrectories () ؛

لا تحدث هذه المشكلة عند تنفيذ الكود على نظام Windows. أقوم حاليًا باختبار Linux باستخدام Ubuntu 9.10

هل كانت مفيدة؟

المحلول

يبدو أن نظام FileSystem لسبب ما يعتقد أنك على Windows ، وليس Linux ، وبالتالي تستخدم أسماء مسارات نمط Windows (مفصولة بـ ). هل يمكنك نشر المزيد من المعلومات حول كيفية بناء دفعة وكيف تضمن الرؤوس؟ هل ربما تقوم ببناء إصدار من Windows من Boost على Linux؟

تعديل: لقد حاولت إعداد نفسي في تكوين أقرب ما يمكن لك. Ubuntu 9.10 ، Libboost1.40-all-dev مثبتة. عندما أقوم بتجميع وتشغيل البرنامج التالي ، يعمل كما هو متوقع ، وإنشاء دليل مسمى configSet في /data.

#include <boost/filesystem.hpp>

int main() {
  boost::filesystem::path p("/data/configSet");
  boost::filesystem::create_directory(p);

  return 0;
}

هل يمكنك محاولة تجميع وتشغيل هذا البرنامج ، مع الأوامر التالية ، ومعرفة ما إذا كان يمنحك نتائج مختلفة؟

$ g++ -o boost-filesystem -lboost_filesystem boost-filesystem.cpp
$ ./boost-filesystem
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top