红联Linux门户
Linux帮助

Linux编程学习笔记

发布时间:2007-08-20 00:37:38来源:红联作者:augset
最近业余时间比较充足,加之手头有两本Linux编程的书,没事就拿来翻翻,希望能早点登堂入室。

1、第一个程序:hello.c
呵呵,好像无论学习哪一种编程都是从Hello,World!开始的!
int main(int argc,char **argv)
{
printf("Hello World!\n");
return 0;
}
要编译这个程序,我们只要在命令行下执行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个hello 的可执行文件.执行./hello 就可以看到程序的输出结果了。命令行中gcc 表示我们是用gcc 来编译我们的源程序,-o 选项表示我们要求编译器

给我们输出的可执行文件名为hello 而hello.c 是我们的源程序文件。另外还有-c 选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件。

2、最简单的Makefile文件
以上面的hello.c为例,Makefile文件的内容如下:
hello: hello.o
gcc -o hello hello.o
hello.o: hello.c
gcc -c hello.c
clean:
rm -f *.o

第一行表示的是依赖关系.第二行是规则.
hello: hello.o
表示我们的目标(target)hello 的依赖对象(components)是hello.o
当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.
注意规则一行中的冒号后面是一个TAB 键

3、几个有用的系统函数
pid_t getpid(void); //得到进程的ID
pid_t getppid(void); //得到父进程(创建调用该函数进程的进程)的ID
uid_t getuid(void); //得到进程的所有者的ID
uid_t geteuid(void); //得到进程的有效用户ID
gid_t getgid(void); //得到组ID
git_t getegid(void);//得到有效组ID
getpwuid(uid_t);//得到用户的更多详细信息

综合使用以上几个函数
#include
#include
#include

int main()
{
pid_t my_pid,parent_pid;
uid_t my_uid,my_euid;
gid_t my_gid,my_egid;
struct passwd *my_info;

my_pid = getpid();
parent_pid = getppid();
my_uid = getuid();
my_euid = geteuid();
my_gid = getgid();
my_egid = getegid();
my_info = getpwuid(my_uid);

printf("Process ID:%ld\n",my_pid);
printf("Parent ID :%ld\n",parent_pid);
printf("User ID :%ld\n",my_uid);
printf("Effective User ID:%ld\n",my_euid);
printf("Group ID :%ld\n",my_gid);
printf("Effective Group ID:%ld\n",my_egid);

if(my_info)
{
printf("My Login Name:%s\n",my_info->pw_name);
printf("My Password :%s\n",my_info->pw_passwd);
printf("My User ID :%ld\n",my_info->pw_uid);
printf("My Group ID :%ld\n",my_info->pw_gid);
/*printf("My RealName :%s\n",my_info->gecos);*/
printf("My Home Dir :%s\n",my_info->pw_dir);
/*printf("My Work Shell:%s\n",my_info->shell);*/
}

return 0;
}
文章评论

共有 16 条评论

  1. dengt 于 2010-09-03 14:14:25发表:

    凡是关于新手的经验都顶

  2. longyun 于 2009-12-21 20:41:35发表:

    加油啊!呵呵,linux越火越好!

  3. svanilla 于 2009-10-21 22:58:14发表:

    顶你!!我是草鸟

  4. wangdonghua 于 2009-10-17 14:56:02发表:

    很详细希望能够继续更新

  5. dudusdau 于 2009-10-16 17:16:53发表:

    学习下:0)1

  6. dudusdau 于 2009-10-16 17:16:47发表:

    学习下:0)1

  7. Sanptzx 于 2009-10-16 10:35:32发表:

    楼主看的是linux下C语言编程入门 -,-

  8. sunhy1021 于 2009-10-15 14:31:34发表:

    学习啊!

  9. tuchangyan 于 2009-10-14 10:09:56发表:

    学习中。

  10. bjseek 于 2007-12-25 16:08:35发表:

    恩。很详细,谢谢!:0)1

  11. jackxu007 于 2007-12-25 10:28:04发表:

    :0w5ty(1 ding

  12. levelgxw 于 2007-12-22 18:59:05发表:

    我刚装完redhat 11才开始看c 请有用的

  13. ROBINSON 于 2007-11-27 13:53:52发表:

    DING !

  14. huangcao214 于 2007-11-27 09:13:30发表:

    学习一下

  15. solx 于 2007-11-13 11:28:59发表:

    凡是关于新手的经验都顶~:0wmjh(1 ~

  16. carlote 于 2007-11-12 23:04:17发表:

    我是新手,正在研究LINUX下的c编程,正好有用...谢