fork函数使用

Linux C语言多进程入门

#include <unistd.h>
#include <stdio.h>

int main(void)
{
	pid_t pid;
	pid = fork();
	if(pid==-1)
		printf("fork error\n");
	else if(pid==0)
	{
		printf("the returned value is %d\n", pid);
		printf("in child process!!\n");
		printf("My PID is %d\n",getpid());
	}
	else
	{
		printf("the returned value is %d\n", pid);
		printf("in father process!!\n");
		printf("My PID is %d\n",getpid());
	}

	return 0;
}

excel函数替代

Linux C语言多进程入门

#include <unistd.h>
#include <stdio.h>

int main(void)
{
	printf("entering main process---\n");
	if(fork()==0)
	{
        // 
		execl("/bin/ls","ls","-l",NULL);
		printf("exiting main process ---\n");
		return 0;
	}
}

Linux C语言多进程入门

等待进程

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

int main(void)
{
	pid_t pid_child, pid_return;
	pid_child = fork();
	if(pid_child < 0)
	{
		printf("Error occured on forking.\n");
	}
	else if(pid_child == 0)
	{
		sleep(10);
		exit(0);
	}
	do
	{
	    pid_return = waitpid(pid_child,NULL, WNOHANG);
		if(pid_return == 0)
		{
			printf("No child exited\n");
			sleep(1);
		}
	}
	while(pid_return == 0);
	if (pid_return == pid_child)
		printf("successfullyget child %d\n", pid_return);
	else
		printf("some error occured\n");

	return 0;
}

 

相关文章: