Linux C程式練習(2)程序操作
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc,char **argv){ pid_t pid=0,ppid=0; uid_t uid=0,euid=0; gid_t gid=0,egid=0; pid=getpid();//程序ID ppid=getppid();//父程序ID uid=getuid();//實際使用者ID euid=geteuid();//有效使用者ID gid=getgid();//實際組ID egid=getegid();//有效組ID printf("%u,%u,%u,%u,%u,%u\n",pid,ppid,uid,euid,gid,egid); return 0; }
processID.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int global; int main(int argc,char **argv){ pid_t pid; int stack=1; int *heap=NULL; heap=(int *)malloc(sizeof(int)); *heap=2; pid=fork(); if(pid<0){ perror("fork()"); exit(1); }else if(pid==0){ global++; stack++; (*heap)++; printf("The child ,pid is %u,stack:%d,heap:%d,global:%d.\n",getpid(),stack,*heap,global); }else{ sleep(2); printf("The parent ,pid is %u,stack:%d,heap:%d,global:%d.\n",getpid(),stack,*heap,global); } exit(0); }
processCreat.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int global; int main(int argc,char **argv){ pid_t pd=0; int count=0; if(argc<2){ perror("Usage Error !\n"); exit(1); } for(count=1;count<argc;count++){ pd=fork(); if(pd<0){ perror("fork()"); exit(1); }else if(pd==0){ printf("Child Start PID=%d\t*****\n",getpid()); execl("/bin/ls","ls",argv[count],NULL); perror("execl()"); exit(1); }else{ //wait(1); printf("Child End PID=%d\t*****\n",getpid()); } exit(0); } }
processUseShell.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <strings.h>
#include <sys/types.h>
//#include <apue.h>
int main(int argc,char **argv){
char *command=NULL;
int flag=0;
command=(char *)malloc(1024*sizeof(char));
memset(command,0,1024*sizeof(char));
while(1){
printf("[email protected]");
if(fgets(command,100,stdin)!=NULL){
if(strcmp(command,"exit\n")==0){
puts("quit successful!");
break;
}
flag=system(command);
if(flag==-1){
perror("fork()");
exit(1);
}
memset(command,0,100);
}
}
free(command);
command=NULL;
exit(0);
}
processUseSystem.c
相關推薦
Linux C程式練習(2)程序操作
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc,char **argv){
linux 下C語言程式設計(2)——程序的建立,掛起,解掛,程序間通訊
在 linux 下利用C語言實現程序的建立,掛起和解掛操作 #include <stdio.h> #include <sys/stat.h> #include <sy
C++ STL練習(2)
題目1:反片語 思路: 由於有了上篇部落格題目中的經驗,遇到不區分大小寫,那就在判斷時用臨時變數儲存呼叫tolower()函式轉變成小寫形式的字串 1.可以寫一個函式對每個單詞標準化:全部轉化為小寫字母,然後再對字母排序 2.用map統計標準化每個單詞出現的次數,標準化之後題目
Linux核心學習筆記(2)—— 程序
來源:《Linux核心設計與實現(第2版)》第三章 Robert Love 知識點很少,蝸牛慢慢爬~~~ 1. 什麼是程序? 程序是處於執行期的程式以及它所包含的資源的總稱。所謂的資源,像開啟的檔案、掛起的訊號、核心內部資料、處理器狀態、地址空間、一
Linux C程式設計練習(一)
1、定製自己的ls命令 #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <stdlib.h> #include &
Linux 階段練習(2)
Linux階段練習(2)67、顯示CentOS7上所有系統用戶的用戶名和UID # cat /etc/passwd |grep '.*:x:\<[2-9][0-9][1-9]\>.*'68、添加用戶bash、testbash、basher、sh、nologin(其shell為/s
C#指南,重溫基礎,展望遠方!(2)程序結構
system 兩個 -h static 說明 所有 順序 HR 相互 C# 中的關鍵組織結構概念包括程序、命名空間、類型、成員和程序集。 C# 程序由一個或多個源文件組成。 程序聲明類型,而類型則包含成員,並被整理到命名空間中。 類型示例包括類和接口。 成員示例包括字段、方
C++學習筆記(2)——程式的建立、編譯與除錯
單位新來的同事(也是非科班出生)問我程式設計用什麼軟體時,我大多會告訴他們VS2010或者VS2008(原諒我們單位用的IDE還如此老舊)。他們便會找來VS2010或者VS2008的教程,一步步照著做起來。新建工程,寫了一個main函式,列印了“helloworld”,點選了
unix/linux程式設計實踐教程C語言補充(2)
1 getchar()和putchar()函式 getchar()函式的功能是從終端接受一個字元。可以將其置於程式中實現暫停功能。 getchar()函式接受的字元可以賦給一個字元型或整型變數,也可以賦給任何變數,直接輸出。 putchar(引數) 引數可以是一個字元
Linux存儲管理(2)
linux 空間 能力 用戶 RAID磁盤陣列,簡稱獨立磁盤冗余陣列。可以將多個硬盤按不同方式組合在一起形成一個硬盤組,從而產生比單個硬盤更高的存儲行能和數據備份功能;使多個磁盤實現並行讀寫;擁有容錯能力;用戶可以對組成的硬盤組進行格式化,掛載等操作,與單個硬盤的操作一模一樣,但其存儲速度
C++14系列(2):C/C++的時間函數
復習 -a 執行時間 htm 結果 down pro addclass data- C++筆記開始 為了好好研究下C++14。順便復習下曾經的C++知識。搞了個git(不斷完好中): https://github.com/rododo/cpp14ex
Linux保護開機密碼(2)
linux 密碼只要對Linux熟悉一點的,都知道如何去修改密碼,但是,這樣很不安全,因為每個人都可以修改,如何去保護他們呢?有這樣一個辦法,就是在設置密碼的時候,在設置一個密碼去保護它,不就可以了?一:首先,進入超級用戶的目錄下使用命令:vi /etc/grub.conf進入該狀態之後,按下i鍵,進入編輯狀
c#基礎知識(2)
alt 實現 height over 聯系 c# 覆蓋 tro strong 一,繼承與派生 原來的類——基類或父類 新定義的類——派生類 引入原因:擴展原有類的功能 派生類的成員: (1)會吸收基類的所有成員(包括私有成
在STM32上實現NTFS之5:GPT分區表的C語言實現(2)GPT實現以及統一方式讀取磁盤分區
tfs 下載 數據 特殊 dpt 屬性列表 handle 系統分區 成了 上一節實現了主GPT頭的信息提取,這一節繼續提取整個的GPT數據,並且將GPT分區表和MBR分區表兩種格式融合成一個模塊,使主調函數(也可以說是使用者)不需要關心磁盤的分區表類型:它太底層了,確實
linux磁盤篇(2)——lvm
linux磁盤 lvm LVM Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。LVM解決了分區大小分配磁盤擴展問題。例如: 在創建的系統的時候講/date 分配掛載在/目錄下,後期由於業務需求需要獨立出來。重新掛載一個新的分區
Linux系統編程(2)
linux系統編程一 exec函數 e:env int execle(const char *path, const char *arg,..., char * const envp[]); 環境變量指針數組: char *envp[] = {"環境變量名=內容",NULL};
Linux日常管理技巧(2):free,ps,netstat命令和抓包工具
情況下 路由器配置 傳輸協議 method ups lis red field 保存 一、free命令 free命令可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。用法: free [選項] 選項: -b:以Byte為單位顯示內存使用情況;-
linux信號解釋(2)
linux信號解釋筆者學識不深,以下內容是網上摘取,以便日後使用。 信號 信號詳細描述 簡明描述 處理方式 1) SIGHUP 本信號在用戶終端連接(正常或非正常)結束時發出, 通常是在終端的控制進程結束時, 通知同一session內的各個作業, 這時它們與控制終端不再關聯。 連接掛斷 終止(默
《Linux學習並不難》Linux網絡命令(2):ifconfig命令顯示和配置網絡接口
Linux ifconfig 27.2 《Linux學習並不難》Linux網絡命令(2):ifconfig命令顯示和配置網絡接口使用ifconfig命令可以顯示和配置網絡接口,比如設置IP地址、MAC地址、激活或關閉網絡接口。命令語法:ifconfig [接口] [選項| IP地址]命令中各選項的含
Linux集群架構(2)LVS介紹、LVS的調度算法、NAT模式搭建、 DR模式、keepalive
集群框架 負載均衡集群介紹 LVS介紹1.LVS NAT模式:(,目標ip轉發。適用於小型集群,機器數量不多10臺左右)2.LVS IP Tunnel模式(將目標ip進行更改)(在這個模式下的rs機器都是配置有公網ip)3.LVS DR模式(把數據包的MA