c編程進程
Ⅰ 怎麼用c語言結束某進程
首先你要知道該進程的PID
如果在windows下可以用tskill PID命令來實現,如果是c語言,只需要用system函數就可以實現
#include"stdio.h"
#include"stdlib.h"
intmain()
{
system("tskillXXXX");
return0;
}
其中XXXX就是你需要傳入的進程的PID
如果是linux或者unix的系統
則用kill命令:
#include"stdio.h"
#include"stdlib.h"
intmain()
{
system("killXXXX");
return0;
}
XXX一樣是進程的PID
Ⅱ 在Linux下用C語言編程
4。守護進程的創建
如果你在DOS時代編寫過程序,那麼你也許知道在DOS下為了編寫一個常駐內存的程序我們要編寫多少代碼了.相反如果在Linux下編寫一個"常駐內存"的程序卻是很容易的.我們只要幾行代碼就可以做到. 實際上由於Linux是多任務操作系統,我們就是不編寫代碼也可以把一個程序放到後台去執行的.我們只要在命令後面加上&符號SHELL就會把我們的程序放到後台去運行的. 這里我們"開發"一個後台檢查郵件的程序.這個程序每個一個指定的時間回去檢查我們的郵箱,如果發現我們有郵件了,會不斷的報警(通過機箱上的小喇叭來發出聲音). 後面有這個函數的加強版本加強版本
後台進程的創建思想: 首先父進程創建一個子進程.然後子進程殺死父進程(是不是很無情?). 信號處理所有的工作由子進程來處理.
#include
#include
#include
#include
#include
#include
#include
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */
#define MAIL "/var/spool/mail/hoyt"
/* 睡眠10秒鍾 */
#define SLEEP_TIME 10
main(void)
{
pid_t child;
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child>0)
while(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Kill Parent Error:%s\n",strerror(errno));
exit(1);
}
{
int mailfd;
while(1)
{
if((mailfd=open(MAIL,O_RDONLY))!=-1)
{
fprintf(stderr,"%s","\007");
close(mailfd);
}
sleep(SLEEP_TIME);
}
}
}
你可以在默認的路徑下創建你的郵箱文件,然後測試一下這個程序.當然這個程序還有很多地方要改善的.我們後面會對這個小程序改善的,再看我的改善之前你可以嘗試自己改善一下.比如讓用戶指定郵相的路徑和睡眠時間等等.相信自己可以做到的.動手吧,勇敢的探險者.
好了進程一節的內容我們就先學到這里了.進程是一個非常重要的概念,許多的程序都會用子進程.創建一個子進程是每一個程序員的基本要求!
Ⅲ C語言怎麼同時運行多個程序
在C語言中,實現同時運行多個程序的方法主要有兩種:多進程和多線程。多進程是通過fork()函數實現的,此函數可以創建一個與當前進程完全相同的進程,新進程與原進程共享代碼,但各自維護獨立的變數、棧和堆。因此,一個進程可以創建多個子進程,每個子進程可以運行不同的程序。同時,可以使用exec()函數族,包括execl()、execv()、execle()、execve()等,這些函數可以載入並運行新的程序,取代當前進程的程序。需要注意的是,多進程的每個進程都有獨立的內存空間,因此,進程間的數據共享需要通過文件或共享內存等方式實現。
另一種實現同時運行多個程序的方式是使用多線程,線程是進程中的一個執行單元,多個線程可以共享進程的資源,如代碼、數據和文件描述符等。多線程方式使用的庫函數包括pthread_create()、pthread_join()等。多線程的程序運行效率較高,因為線程之間的切換開銷較小,可以節省大量的切換時間。但是,多線程編程需要處理好線程間的同步和互斥問題,否則可能會出現死鎖或競態條件等問題。
多進程和多線程各有優缺點,適用於不同的場景。多進程方式可以實現完全獨立的程序,進程間的通信相對簡單,但是進程間的數據共享較為困難,且進程間切換的開銷較大。而多線程方式則可以提高程序的運行效率,但是線程間的數據共享和同步需要特別注意,否則可能會出現各種問題。因此,在選擇多進程或多線程方式時,需要根據具體的應用場景和需求進行權衡。
同時運行多個程序時,還需要注意資源管理和同步問題。資源管理主要涉及到內存、文件和系統資源的分配和回收,以及線程或進程之間的資源競爭和沖突。同步問題則涉及到多個線程或進程之間的協調和協作,以確保程序的正確性和效率。常見的同步機制包括互斥鎖、信號量、條件變數等。通過合理使用這些機制,可以有效地解決多線程或多進程間的同步問題。
Ⅳ linux系統c語言進程不想被sleep阻塞等待怎麼解決
1、啟動後檯子任務,在執行命令後加&操作符,表示將命令放在子shell中非同步執行。可以達到多線程效果。如下,sleep10#等待10秒,再繼續下一操作sleep10當前shell不等待,後檯子shell等待。
2、wait命令wait是用來阻塞當前進程的執行,直至指定的子進程執行結束後,才繼續執行。使用wait可以在bash腳本「多進程」執行模式下,起到一些特殊控制的作用。