新闻  |   论坛  |   博客  |   在线研讨会
进程通信的系统调用很常用
yanqin | 2009-04-17 11:56:27    阅读:1462   发布文章

进程通信的系统调用
•pipe系统调用
格式:  int pipe (filedes)
              int filedes [2];
•消息机制
•Msgid=msgget(key,msgflg)
    key_t key;
    int msgflg;
•Msgctl(msgid, cmd, buf)
    int msgid, cmd;
   msgqid_ds  #buf;
•msgsnd(msgid, msgp, msgsz, msgflg)
    int msgid;
    struct msgbuf  *msgp;
    int msgsz, msgflg;
•msgrcv (msgid, msgp, msgsz, msgtyp, msgflg );
    int msgid;
    struct msgbuf  *msgp;
    int msgsz;
    long msgtyp;
    int msgflg;
管道通信程序#include <stdio.h>
#include <fcntl.h>
char parent[]={“A message from parent .”};
char child[]={“A message from child .”};
main()
{int chan1[2],chan2[2];
char buf[100];
if (pipe(chan1)==-1 || pipe(chan2)==-1) errexit(“pipe”);
if (fork())
{close(chan1[0]);    close(chan2[1]);
   write(chan1[1],parent,sizeof parent);
   close(chan1[1]);
   read(chan2[0],buf,100);  
printf(“parent process : %s \n”,buf);
    close(chan2[0]);
   }
   else
   {close(chan1[1]); close(chan2[0]);
     read(chan1[0],buf,100);
     printf(“child process : %s \n”,buf);
     write(chan2[1],child,sizeof child);
     close(chan2[1]); close(chan1[0]);
    }
}
5. 实验题:
 用C语言编制一个使用进程控制和进程通信类系统调用的程序。
编辑工具: X-windows  gedit全屏幕编辑程序。
             vi
编译命令: $gcc  ^^^.c  -o  ***
               (源程序名) (可执行文件名)
         或 $gcc  ^^^.c
         默认可执行文件为 a.out
执行    $  . /a.out

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客