Linux进程(创建进程、等待进程结束、退出进程)

Linux进程(创建进程、等待进程结束、退出进程)

1.创建进程

#include 
#include 
pid_t fork(void);

fork()函数用来创建一个进程,创建成功返回0,失败返回-1。
实例

#include 
#include 
#include 
#include 

int main()
{
    pid_t pid;
    pid=fork();
    if(-1==pid)
    {
        printf("Error to create new process!\n");
        return -1;
    }
    else if(pid==0)
    {
        printf("Child process!\n");
    }
    else
    {
        printf("Parent process! Child process ID:%d",pid);
    }
    return 0;
}

2.等待进程结束

#include 
#include 
pid_t waitpid(pid_t pid,int *status,int options);

waitpid()返回值:
①<-1:等待所有其进程组表示等于pid绝对值的子进程;
②-1:等待任何子进程;
③0:等待任何其组标识等于调用进程组标识的进程;
④>0:等待其进程标识等于pid的进程。
status表示子进程的返回状态,option默认为0或者设置其他选项,这里不做解释。

实例

#include 
#include 
#include 
#include 
#include 
int main()
{
    pid_t pid,pid_wait;
    int status;
    pid=fork();
    if(-1==pid)
    {
        printf("Error to create new process!\n");
        return 0;
    }
    else if(pid==0)
    {
        printf("Chile process!\n");
    }
    else
    {
        printf("Parent process!Child process ID:%d\n",pid);
        pid_wait=waitpid(pid,&status,0);
        printf("Child process %d returned!\n",pid_wait);
    }
    return 0;
}

3.退出进程

#include 
int atexit(void (*function)(void));
int on_exit(void (*function)(int,void*),void *arg);
void exit(int status);

#include 
void _exit(int status);

exit()是退出当前进程,释放进程占用资源;_exit()也是退出当前进程,不释放进程占用资源。
atexit()和on_exit()是程序退出时调用用户代码。

实例

#include 
#include 
#include 

void bye()
{
    printf("That was all,forks\n");
}

void bye1()
{
    printf("This is the first fork\n");
}

int main()
{
    int i;
    i=atexit(bye);
    if(i!=0)
    {
        fprintf(stderr,"cannot set exit function bye()!\n");
        return EXIT_FAILURE;
    }
    i=atexit(bye1);
    if(i!=0)
    {
        fprintf(stderr,"cannot set exit function bye1()!\n");
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

bye1()会被先执行,bye()后执行。

不积跬步无以至千里。

你可能感兴趣的:(Linux)