c語言判斷進程是否存在
⑴ 用c語言編一個程序,用於判斷某個應用程序(.exe後綴)是否已經運行。
枚舉操作系統,查找有無此進程。。 這是正統方法。。
還有一個變通的技巧:
先備份源程序,然後嘗試刪除之,如果刪除成功,說明沒有運行,
還原備份文件,否則,說明程序已運行,刪除備份文件。。
這個用批處理就可以解決了。。
⑵ C語言中exit();怎麼用
exit() 結束當前進程/當前程序/,在整個程序中,只要調用 exit ,就結束。
return() 是當前函數返回,當然如果是在主函數main, 自然也就結束當前進程了,如果不是,那就是退回上一層調用。
在多個進程時.如果有時要檢測上進程是否正常退出的.就要用到上個進程的返回值。
exit(1)表示進程正常退出. 返回 1;
exit(0)表示進程非正常退出. 返回 0.
操作:
1、進程的開始:
C程序是從main函數開始執行, 原型如下:int main(int argc, char *argv[]),通常main的返回值是int型, 正確返回0.如果main的返回值為void或者無, 某些編譯器會給出警告, 此時main的返回值通常是0.
2、進程終止:
C程序的終止分為兩種: 正常終止和異常終止.正常終止分為: return, exit, _exit, _Exit, pthreade_exit異常中指分為: abort, SIGNAL, 線程響應取消。正常終止的前4種, 即exit系列函數.
3、 atexit終止處理程序:
ISO C規定, 一個進程最對可登記32個終止處理函數, 這些函數由exit按登記相反的順序自動調用. 如果同一函數登記多次, 也會被調用多次.
原型如下:
#include
int atexit(void (*func)(void));
其中參數是一個函數指針, 指向終止處理函數, 該函數無參無返回值.
(2)c語言判斷進程是否存在擴展閱讀
exit函數和return函數的主要區別:
1)exit用於在程序運行的過程中隨時結束程序,exit的參數是返回給OS的。main函數結束時也會隱式地調用exit函數。
exit函數運行時首先會執行由atexit()函數登記的函數,然後會做一些自身的清理工作,同時刷新所有輸出流、關閉所有打開的流並且關閉通過標准I/O函數tmpfile()創建的臨時文件。
exit是結束一個進程,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程;而return是返回函數值並退出函數。
通常情況:exit(0)表示程序正常, exit(1)和exit(-1)表示程序異常退出,exit(2)表示表示系統找不到指定的文件。在整個程序中,只要調用exit就結束(當前進程或者在main時候為整個程序)。
2)return是語言級別的,它表示了調用堆棧的返回;return( )是當前函數返回,當然如果是在主函數main, 自然也就結束當前進程了,如果不是,那就是退回上一層調用。
在多個進程時。如果有時要檢測上個進程是否正常退出。就要用到上個進程的返回值,依次類推。而exit是系統調用級別的,它表示了一個進程的結束。
3)exit函數是退出應用程序,並將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息。