Saturday, August 1, 2015

1. Get and Set environment variables
Thư viện stdlib.h cung cấp các hàm để chương trình tương tác với các biến môi trường bên ngoài.

 #include <stdlib.h>  
 char *getenv(const char *name);  
 int putenv(const char *string);  

getenv lấy giá trị của biến môi trường.
+ name
Tên của biến môi trường
+ return
Trả về NULL nếu name không tồn tại.
Trả về string rỗng nếu name tồn tại nhưng không có giá trị.
Trả về giá trị của name nếu name tồn tại và có giá trị.

putenv gán giá trị cho biến môi trường.
+ string
Chuỗi gán biến môi trường và giá trị của nó.
+ return
Trả về -1 nếu coa lỗi.

Ex:
environ.c
 #include <stdio.h>  
 #include <stdlib.h>  
   
 int main ()  
 {  
   char *tmp;  
   
   tmp = getenv("PATH");  
   if(tmp)  
     printf("PATH : %s\n", tmp);  
   
   tmp = getenv("HOME");  
   if(tmp)  
     printf("HOME : %s\n", tmp);  
   
   tmp = getenv("ROOT");  
   if(tmp){  
     printf("ROOT : %s\n", tmp);  
   } else{  
     char *root = "ROOT=/root";  
     putenv(root);  
     printf("set ROOT : %s\n", getenv("ROOT"));  
   }  
   
   return(0);  
 }  
   

Compile & Execute:
 $ gcc environ.c   
 $ ./a.out   
 PATH : /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin  
 HOME : /home/ninhld  
 set ROOT : /root  
   


2. The environ Variable
 #include <stdlib.h>  
 extern char **environ;  

environ là mảng chứa tất cả các biến môi trường và giá trị của chúng.

Ex:
showenv.c
 #include <stdlib.h>  
 #include <stdio.h>  
 extern char **environ;  
 int main()  
 {  
   char **env = environ;  
   while(*env) {  
     printf("%s\n",*env);  
     env++;  
   }  
   exit(0);  
 }  
   

Compile & Execute:
 $ gcc showenv.c   
 $ ./a.out   
 XDG_VTNR=1  
 MATE_DESKTOP_SESSION_ID=this-is-deprecated  
 SSH_AGENT_PID=1418  
 XDG_SESSION_ID=1  
 HOSTNAME=localhost.localdomain  
 XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ninhld  
 IMSETTINGS_INTEGRATE_DESKTOP=yes  
 GPG_AGENT_INFO=/home/ninhld/.cache/keyring-PhSdLU/gpg:0:1  
 TERM=xterm-256color  
 SHELL=/bin/bash  
 HISTSIZE=1000  
 HELLO=hello  
 WINDOWID=67108895  
 OLDPWD=/home/ninhld  
 GNOME_KEYRING_CONTROL=/home/ninhld/.cache/keyring-PhSdLU  
 QTDIR=/usr/lib64/qt-3.3  
 QTINC=/usr/lib64/qt-3.3/include  
 IMSETTINGS_MODULE=IBus  
 QT_GRAPHICSSYSTEM_CHECKED=1  
 USER=ninhld  
 ...

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -