歡迎您光臨本站 註冊首頁

Linux編程學習筆記

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

最近業餘時間比較充足,加之手頭有兩本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;
}

[火星人 ] Linux編程學習筆記已經有331次圍觀

http://coctec.com/docs/linux/show-post-188111.html