1. 程式人生 > >Linux C程式練習(2)程序操作

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){

linuxC語言程式設計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語言實現2GPT實現以及統一方式讀取磁盤分區

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集群架構2LVS介紹、LVS的調度算法、NAT模式搭建、 DR模式、keepalive

集群框架 負載均衡集群介紹 LVS介紹1.LVS NAT模式:(,目標ip轉發。適用於小型集群,機器數量不多10臺左右)2.LVS IP Tunnel模式(將目標ip進行更改)(在這個模式下的rs機器都是配置有公網ip)3.LVS DR模式(把數據包的MA