سؤال

كيف يمكنني تعيين متغير بيئة في C ++؟

  • لا يحتاجون إلى استمرار تنفيذ البرنامج السابق
  • إنهم بحاجة فقط إلى أن يكونوا مرئيين في العملية الحالية
  • التفضيل لمنصة مستقلة ولكن لمشكلتي تحتاج فقط إلى العمل على Win32 / 64

شكرا

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

المحلول

اسم puteNV - تغيير أو إضافة بيئة متغيرة ملخص #includeu003Cstdlib.h> int putenv (char * string)؛ الوصف توفر وظيفة putenv () أو تغيير قيمة متغيرات البيئة. سلسلة الوسيطة هي من اسم النموذج = القيمة. إذا كان الاسم موجودا بالفعل في البيئة، فسيتم إضافة السلسلة إلى البيئة. إذا كان الاسم موجودا، فسيتم تغيير قيمة الاسم في البيئة إلى القيمة. تصبح السلسلة المدفوعة حسب السلسلة جزءا من البيئة، لذلك يؤدي تغيير السلسلة إلى تغيير البيئة.

على Win32 يطلق عليه _Putenv أعتقد.

يرى setenvironmentvariable. أيضا إذا كنت من محبي أسماء الوظائف الطويلة والقبيحة.

نصائح أخرى

أنا لست متغيرات بيئة إيجابية هي ما تحتاجه، لأنها لن يتم استخدامها خارج نطاق هذا البرنامج. لا حاجة لإشراك نظام التشغيل.

قد تكون أفضل حالا من وجود فئة Singleton أو مساحة اسم تحمل كل هذه القيم، وتهيئةها عند بدء تشغيل البرنامج.

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
    main(int argc,char *argv[])
    {

    char *var,*value;
        if(argc==1||argc>3)
        {
        fprintf(stderr,"usage:environ variables \n");
        exit(0);
        }
    var=argv[1];
    value=getenv(var);
    //---------------------------------------
        if(value)
        {
        printf("variable %s has value %s \n",var,value);
        }
        else 
        printf("variable %s has no value \n",var);  
        //----------------------------------------
        if(argc==3)
        {
        char *string;
        value=argv[2];
        string=malloc(strlen(var)+strlen(value)+2);
            if(!string)
            {
            fprintf(stderr,"out of memory \n");
            exit(1);
            }   
            strcpy(string,var);
            strcat(string,"=");
            strcat(string,value);
            printf("calling putenv with: %s \n",string);
            if(putenv(string)!=0)
            {
            fprintf(stderr,"putenv failed\n");
            free(string);
            exit(1);
            }
                        value=getenv(var);
            if(value)
                 printf("New value of %s is %s \n",var,value);
            else
            printf("New value of %s is null??\n",var);
        }     
        exit(0);

    }//----main





/* commands to execure on linux   compile:- $gcc -o  myfile myfile.c
                      run:- $./myfile xyz
                                            $./myfile abc
                                            $./myfile pqr
*/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top