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的方式。
