linuxc語言環境變數
修改 /etc目錄下的bashrc文件或profile文件
sudo vi /etc/bashrc
文件末尾添加
export PATH=GCC所在路徑:$PATH
保存退出
執行 . 空格 /etc/bashrc
再試試
PATH 是個環境變數,Windows下也有類似的東西
⑵ Linux C語言用system()調用,帶參數
linux c system函數介紹:
 
system(執行shell 命令)
相關函數
        fork,execve,waitpid,popen
表頭文件
        #i nclude
定義函數
        int system(const char * string);
函數說明
        system()會調用fork()產生子進程,由子進程來調用/bin/sh-c string來執行參數string字元串所代表的命令,此命>令執行完後隨即返回原調用的進程。在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被忽略。
返回值
  =-1:出現錯誤  
  =0:調用成功但是沒有出現子進程  
  >0:成功退出的子進程的id
        如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值>。如果system()調用成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()調用/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。
附加說明
        在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。
範例
        #i nclude
main()
{
system("ls -al /etc/passwd /etc/shadow");
}
執行結果:
-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado
例2:
char tmp[];
sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);
system(tmp);
其中dev是/dev/sda1。 
system函數的源碼
    #include <syspes.h>
    #include <sys/wait.h>
    #include <errno.h>
    #include <unistd.h>
    int system(const char * cmdstring)
    {
    pid_t pid;
    int status;
    if(cmdstring == NULL){
    return (1);
    }
    if((pid = fork())<0){
    status = -1;
    }
    else if(pid = 0){
    execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);
    -exit(127); //子進程正常執行則不會執行此語句
    }
    else
      {
       while(waitpid(pid, &status, 0) < 0){
          if(errno != EINTER)
            {
             status = -1;
             break;
            }
          }
      }
    return status;
}
那麼如何獲得system的返回值呢??
char buf[10];
char * ps="ps -ef|grep -c root";
FILE *ptr;
int i;
if((ptr = popen(ps, "r")) != NULL)
{
        fgets(buf, 10 , ptr);
        i = atoi(buf);
        pclose(ptr);
}
可以man下waitpid查看下如何檢查status的值   
int ret = system("ls -al /etc/passwd /etc/shadow");
  if(WIFSIGNALED(ret))
具體的這些宏查看man waitpid
⑶ 簡述在linux環境下進行C語言編程時,變數可以在什麼位置定義
C語言的變數
一般在函數的最開始部分
或者在文件的最上面,如果在其他文件要使用該變數,則可以在頭文件裡面聲明
⑷ 怎樣將linux環境變數的值傳給c程序。換句話說,怎樣使c能調用linux的環境變數 非常感謝!!!!!
這個用腳本語言 BASH比較好  
如果非要用C語言的話 可以看看《UNIX環境高級編程》 裡面介紹的
⑸ linux c語言運行的時候,怎麼樣可以做到不加 ./
一、在自己的目錄下創建一個bin文件夾
mkdir /home/用戶名/bin
二、修改環境變數
echo PATH=$PATH:$HOME/bin >> .bash_profile
echo export PATH  >> .bash_profile
三、在剛創建的bin目錄下編寫腳本或可執行文件
注意:如果是自己編寫的腳本注意添加執行許可權
chmod u+x 腳本名
綜上,就可以不加  ./  在自己的主目錄下直接運行腳本
⑹ linux 怎麼設置環境變數
子進程繼承父進程   子進程無法改變父進程
當然 我說的是bash情況下  
如果你用C語言 就不一樣了  C語言可以控制內存
父進程的環境變數就在內存的某個位置  
SO 是可以  但是我不會~
⑺ linux下c語言編程
實在點,給你些命令操作操作,不過好象有點多,哈哈
Linux/Unix常用命令
1、目錄操作
和DOS相似,UNIX採用樹型目錄管理結構,由根目錄(/)開始一層層將子目錄建下去,各子目錄以 / 隔開。用戶login後,工作目錄的位置稱為  home   directory,由系統管理員設定。『~』符號代表自己的home   directory,例如  ~/myfile 是指自己home目錄下myfile這個文件。
(1)顯示目錄文件    ls
執行格式:  ls  [-atFlgR] [name]       (name可為文件或目錄名稱)
例:  ls             顯示出當前目錄下的文件
ls  -a        顯示出包含隱藏文件的所有文件
ls  -t         按照文件最後修改時間顯示文件  
ls  -F         顯示出當前目錄下的文件及其類型
ls  -l         顯示目錄下所有文件的許可權、擁有者、文件大小、修改時間及名稱
ls  -lg        同上
ls  -R         顯示出該目錄及其子目錄下的文件 
   注:ls與其它命令搭配使用可以生出很多技巧(最簡單的如"ls -l | more"),更多用法請輸入ls --help查看,其它命令的更多用法請輸入   命令名 --help  查看.
(2)建新目錄   mkdir
執行格式:      mkdir   directory-name
例:            mkdir   dir1   (新建一名為dir1的目錄)
(3)刪除目錄  rmdir
執行格式:      rmdir    directory-name  或  rm   directory-name
例:rmdir  dir1      刪除目錄dir1,但它必須是空目錄,否則無法刪除
     rm  -r  dir1     刪除目錄dir1及其下所有文件及子目錄
     rm  -rf dir1    不管是否空目錄,統統刪除,而且不給出提示,使用時要小心
(4) 改變工作目錄位置     cd
執行格式:    cd  [name]                       
例: cd            改變目錄位置至用戶login時的working  directory
     cd  dir1       改變目錄位置,至dir1目錄
     cd  ~user      改變目錄位置,至用戶的working directory
     cd  ..         改變目錄位置,至當前目錄的上層目錄
     cd  ../user    改變目錄位置,至上一級目錄下的user目錄
     cd  /dir-name1/dir-name2       改變目錄位置,至絕對路徑(Full  path)
     cd  -          回到進入當前目錄前的上一個目錄
(5)顯示當前所在目錄pwd
執行格式:           pwd
(6)查看目錄大小
執行格式:       [-s]  directory
例:      dir1         顯示目錄dir1及其子目錄容量(以kb為單位)
         -s  dir1      顯示目錄dir1的總容量
    (7)顯示環境變數
     echo $HOME    顯示家目錄
     echo $PATH    顯示可執行文件搜索路徑
     env           顯示所有環境變數(可能很多,最好用"env | more","env |                  grep PATH"等)
(8)修改環境變數,在bash下用export,如:
     export PATH=$PATH:/usr/local/bin
     想知道export的具體用法,可以用shell的help命令:help export
2、文件操作
(1)查看文件(可以是二進制的)內容  cat
執行格式:cat filename或more filename 或cat filename|more
例:      cat file1       以連續顯示方式,查看文件file1的內容
more  file1     
或    cat  file1|more 以分頁方式查看文件的內容
(2)刪除文件  rm
執行格式:  rm   filename     
例:        rm     file?              
rm    f*         
(3)復制文件  cp
   執行格式:    cp  [-r]  source  destination 
例:    cp   file1  file2       將file1復製成file2
        cp   file1  dir1        將file1復制到目錄dir1
        cp  /tmp/file1          將file1復制到當前目錄
        cp  /tmp/file1  file2    將file1 復制到當前目錄名為file2
cp  -r  dir1  dir2      (recursive  )復制整個目錄。                        
(4)移動或更改文件、目錄名稱mv
執行格式:       mv  source  destination
例:    mv  file1  file2       將文件file1,更名為file2
        mv  file1  dir1        將文件file1,移到目錄dir1下
mv  dir1   dir2        
(5)比較文件(可以是二進制的)或目錄的內容   diff
  執行格式: diff [-r] name1 name2   (name1、name2同為文件或目錄)
         例:   diff  file1  file2        比較file1與file2的不同處 
diff   -r  dir1  dir2     比較dir1與dir2的不同處
(6)文件中字元串的查找       grep
執行格式:     grep   string  file
例:      grep  abc  file1      查找並列出串abc所在的整行文字
(7)文件或命令的路徑尋找
執行格式一:whereis  command  顯示命令的路徑
執行格式二:which  command   顯示路徑及使用者所定義的別名
執行格式三:whatis   command  顯示命令的功能摘要
(8)建立文件或目錄的鏈接   ln
例:    ln    source  target1  建立source文件(已存在)的硬鏈接,命名為target1
       ln -s  source  target2   建立source文件的符號鏈接,命名為target2
文件編輯器vi 
vi是在UNIX 上被廣泛使用的中英文編輯軟體。vi是visual  editor的縮寫,是UNIX提供給用戶的一個窗口化編輯環境。
進入vi,直接執行vi編輯程序即可。
例:$vi  test.c
顯示器出現vi的編輯窗口,同時vi會將文件復制一份至緩沖區(buffer)。vi先對緩沖區的文件進行編輯,保留在磁碟中的文件則不變。編輯完成後,使用者可決定是否要取代原來舊有的文件。
1、vi的工作模式
vi提供二種工作模式:輸入模式(insert  mode)和命令模式(command  mode)。使用者進入vi後,即處在命令模式下,此刻鍵入的任何字元皆被視為命令,可進行刪除、修改、存檔等操作。要輸入信息,應轉換到輸入模式。
(1)命令模式
在輸入模式下,按ESC可切換到命令模式。命令模式下,可選用下列指令離開vi:
:q! 離開vi,並放棄剛在緩沖區內編輯的內容 
:wq 將緩沖區內的資料寫入磁碟中,並離開vi 
:ZZ 同wq 
:x 同wq 
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi 
:q 離開vi,若文件被修改過,則要被要求確認是否放棄修改的內容,此指令可與:w配合使用 
(2)命令模式下游標的移動 
H 左移一個字元 
J 下移一個字元 
K 上移一個字元 
L 右移一個字元 
0 移至該行的首 
$ 移至該行的末 
^ 移至該行的第一個字元處 
H 移至窗口的第一列 
M 移至窗口中間那一列 
L 移至窗口的最後一列 
G 移至該文件的最後一列 
W, W 下一個單詞 (W 忽略標點) 
B, B  上一個單詞 (B 忽略標點) 
+ 移至下一列的第一個字元處 
- 移至上一列的第一個字元處 
( 移至該句首 
) 移至該句末 
{ 移至該段首 
} 移至該段末 
NG 移至該文件的第n列 
N+ 移至游標所在位置之後第n列 
n- 移至游標所在位置之前第n列 
(3)輸入模式
輸入以下命令即可進入vi輸入模式:
a(append)   在游標之後加入資料 
A   在該行之末加入資料 
i(insert) 在游標之前加入資料 
I   在該行之首加入資料 
o(open) 新增一行於該行之下,供輸入資料用 
O 新增一行於該行之上,供輸入資料用 
dd 刪除當前游標所在行 
X 刪除當前游標字元 
x 刪除當前游標之前字元 
U 撤消 
• 重做 
F 查找 
 
ESC鍵 離開輸入模式 
GNU C編譯器
LINUX上可用的C編譯器是GNU  C編譯器,它建立在自由軟體基金會編程許可證的基礎上,因此可以自由發布。
LINUX 上的GNU  C編譯器(GCC)是一個全功能的ANCI  C兼容編譯器。下面介紹GCC和一些GCC編譯器最常用的選項。
1、使用GCC
通常後跟一些選項和文件名來使用GCC編譯器。GCC命令的基本用法如下:
      gcc [options] [filenames]
命令行選項指定的編譯過程中的具體操作
2、GCC常用選項
GCC有超過100個的編譯選項可用,這些選項中的許多可能永遠都不會用到,但一些主要的選項將會頻繁使用。很多的GCC選項包括一個以上的字元,因此必須為每個選項指定各自的連字元,並且就像大多數LINUX 命令一樣不能在一個單獨的連字元後跟一組選項。例如: 
gcc  test.c
編譯成功後,當前目錄下就產生了一個可執行文件a.out。
也可用-o選項來為即將產生的可執行文件指定一個文件名來代替a.out。例如:
gcc  -o  count  count.c
此時得到的可執行文件就不再是a.out,而是count。
3、執行文件   
格式:     ./可執行文件名
例:./a.out
    ./count
⑻ linux下c語言環境變數操作的幾個相關函數
這幾個函數的原型在<stdio.h>中定義
/* Return the value of envariable NAME, or NULL if it doesn't exist.  */
extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur;
/* The SVID says this is in <stdio.h>, but this seems a better place.    */
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
If there is no `=', remove NAME from the environment.  */
extern int putenv (char *__string) __THROW __nonnull ((1));
/* Set NAME to VALUE in the environment.
If REPLACE is nonzero, overwrite an existing value.  */
extern int setenv (__const char *__name, __const char *__value, int __replace)
__THROW __nonnull ((2));
/* Remove the variable NAME from the environment.  */
extern int unsetenv (__const char *__name) __THROW __nonnull ((1));
⑼ 如何設置C語言里的環境變數
C語言編譯器本身需要環境變數支持,比如配置編譯器可執行文件所在路徑需要設置path環境變數等。
這時可以通過在命令行中調用操作系統對應設置環境變數的命令,實現設置。
a. 在windows/dos下,設置命令為set, 引用變數為%變數名%,於是設置path的可以寫作set path=xxxx;%path%,這樣就在path變數中增加了xxxx路徑。
在C語言運行中,需要設置環境變數。這時可以使用system函數,調用系統命令來實現。
如
system("set my_env=env_string");
是在windows下增加一個my_env的環境變數,值為env_string。
而在linux下,該設置寫作
system("export my_env=env_string");

(9)linuxc語言環境變數擴展閱讀:
C語言中環境變數操作
getenv(取得環境變數內容)
相關函數 putenv,setenv,unsetenv
putenv(改變或增加環境變數)
setenv(改變或增加環境變數)
對環境變數操作
#include<stdlib.h>
main()
{
char * p;
if((p=getenv(「USER」)))
printf(「USER =%s 」,p);
setenv(「USER」,」test」,1);
printf(「USER=%s 」,getenv(「USEr」));
unsetenv(「USER」);
printf(「USER=%s 」,getenv(「USER」));
}
⑽ 編寫linux C語言程序 查看當前系統的shell環境和java環境
在java程序中如何調用linux的命令?如何調用shell腳本呢?
這里不得不提到java的process類了。
process這個類是一個抽象類,封裝了一個進程(你在調用linux的命令或者shell腳本就是為了執行一個在linux下執行的程序,所以應該使用process類)。
process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。
至於詳細的process類的介紹放在以後介紹。
另外還要注意一個類:Runtime類,Runtime類是一個與JVM運行時環境有關的類,這個類是Singleton的。
這里用到的Runtime.getRuntime()方法是取得當前JVM的運行環境,也是java中唯一可以得到運行環境的方法。(另外,Runtime的大部分方法都是實例方法,也就是說每次運行調用的時候都需要調用到getRuntime方法)
下面說說Runtime的exec()方法,這里要注意的有一點,就是public Process exec(String [] cmdArray, String [] envp);這個方法中cmdArray是一個執行的命令和參數的字元串數組,數組的第一個元素是要執行的命令往後依次都是命令的參數,envp感覺應該和C中的execve中的環境變數是一樣的,envp中使用的是name=value的方式。
