程序與進程

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#define MAXLINE 1024

int main()
{
        char buf[MAXLINE];
        pid_t pid;
        int status;   
    int status;

        printf("%%");
        while(fgets(buf,MAXLINE,stdin)!=NULL){//獲取字符串
                if(buf[strlen(buf)-1]=='\n'){
                        buf[strlen(buf)-1]=0;
                }

        //我們稱調用進程爲父進程,新創建的進程爲子進程,fork對父進程
        //返回新的子進程的進程ID,對子進程返回的是0
                if((pid=fork())<0){//創建了一個新的進程
                        printf("fork error");
                }else if(pid==0){
        //execlp以執行從標準輸入讀入的命令
        //執行成功不返回,失敗則返回-1,失敗原因在errno中
                        execlp(buf,buf,(char *)0);
                        printf("coundn't execute:%s",buf);
                        exit(127);
                }

        //waitpid返回的是子進程的終止的狀態(status變量)
                if((pid=waitpid(pid,&status,0))<0){
                        printf("waitpid error");
                }
                printf("%%");
        }
        exit(0);
}
發佈了50 篇原創文章 · 獲贊 21 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章