当先锋百科网

首页 1 2 3 4 5 6 7

Linux下进程的创建与进程间通信?

代码示例:

#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>

#define READ_TERMINAL 0

#define write_TERMINAL 1

int main() {

int file_descriptors[2];

pid_t pid_f;

char PipeBuf[64]={‘a’,‘0’};

int read_ret=0;

pipe(file_descriptors);

pid_f=fork();

if (pid_f<0)

{

printf(“fork error!\n”);

exit(1);

}

else if (pid_f==0)

{

//子进程向父进程发一则消息

printf(“Write in Pipe To FatherProcess!\n”);

close(file_descriptors[READ_TERMINAL]);

sleep(1);

write(file_descriptors[WRITE_TERMINAL],“Child Send”,sizeof(“Child Send”));

//open(file_descriptors[READ_TERMINAL]);

}

else

{

//父进程接收(读取)消息

printf(“Read in Pipe From ChildProcess!\n”);

//通过fcntl()修改为使得读管道数据具有非阻塞的特性

int flag=fcntl(file_descriptors[READ_TERMINAL],F_GETFL,0);

flag |= O_NONBLOCK;

if(fcntl(file_descriptors[READ_TERMINAL],F_SETFL,flag) < 0){

perror(“fcntl”);

exit(1);

}

close(file_descriptors[WRITE_TERMINAL]);

read_ret=read(file_descriptors[READ_TERMINAL],PipeBuf,sizeof(PipeBuf));//没阻塞的读

printf(“Read Message are : %s\n”,PipeBuf);

java getpid,Linux下进程的创建与进程间通信