在 linux 下利用C语言实现进程的创建,挂起和解挂操作
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
#include <errno.h>
#include <stdlib.h>
/***********************************************************
功能说明:在 linux 下利用C语言实现进程的创建,挂起和解挂操作
author:
***********************************************************/
void waitprocess();
int main(int argc, char * argv[])
{
waitprocess();
}
void waitprocess()
{
int count = 0;
pid_t pid = fork();
int status = -1;
if(pid<0)
{
printf("fork错误因为 %m\n",errno );
}else if(pid>0)
{
printf("这是父进程 pid = %d\n",getpid() );
printf("父进程 挂起\n");
wait(&status);//父进程执行到此,马上阻塞自己,直到有子进程结束
}else
{
printf("创建 子进程\n");
printf("这是子进程 pid = %d ,父进程为 ppid = %d\n",getpid(),getppid() );
int i;
for (i = 0; i < 10; i++) {
count++;
sleep(1);
printf("父进程已挂起 %d 秒\n", count) ;
}
exit(5);
}
printf("子进程的退出状态exit status 为 %d\n", WEXITSTATUS(status));//status是按位存储的状态信息
printf("父进程 解挂\n");
printf("从 pid = %d\(父进程\) 结束程序\n",getpid() );
}
进程间通信一:使用消息队列
msgsend.c:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>