编写一个程序,程序中创建一个子进程,然后父子进程各自独立运行。

父进程不断地在标准输入设备上读入小写字母,写入管道。子进程不断地从管道中读取字符,转换为大写字母后输出到标准输出设备上。当读到x时,结束。

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

#define BUFSIZE 10

int main(void)
{
char ch,dh,eh;
int p[2];//文件描述符
pid_t childpid;

if(pipe(p) == -1)//创建管道
{
perror("pipe call");
return -1;
}
if((childpid = fork()) == -1)//创建子进程
{
perror("fork call");
return -1;
}
if(childpid!=0)//父进程
{
close(p[0]);//关闭读文件
do
{
ch = getchar();
write(p[1],&ch,1);//向管道写
}while(ch!='x');//遇到'x'则结束
}
else if(childpid==0)//子进程
{
close(p[1]);//关闭写文件
while(1)
{
read(p[0],&dh,1);//从管道读
if(dh == 'x')
{
printf("\n");
return 0;
}
else if(dh>='a'&&dh<='z')
{
eh = (char)((int)dh - 32);//转化成大写输出
printf("%c",eh);
}
else {
printf("%c",dh);
}
}

}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-02-11
比如有一个下拉框定义如下:
<asp:dropdownlist id="ddlBusCode" runat="server"></asp:dropdownlist>
那么可以利用以下方法来获取值:
方法一:
var ddl = document.getElementById("ddlBusCode")

var index = ddl.seletedIndex;
var Value = ddl.options[index].value;
var Text = ddl.options[index].text;
方法二:
var aaa=ddlBusCode.options[this.selectedIndex].value;

第2个回答  2011-05-17
windows还是linux?追问

Linux

第3个回答  2011-05-17
同求

C语言完成:父进程创建两个子进程,父子进程都在屏幕上显示自己的进程io号...
int main(){ pid_t child1,child2;child1=fork();if(child1==-1){ printf("Child1 fork error!\\n");exit(1);} else if(child1==0){ printf("The returned value is %d\\n In child1 process!!\\nMy PID is %d\\n",child1,getpid());} else { child2=fork();if(child2==-...

关于fork()函数
Fork函数是编程中一项关键工具,它实现了进程的分叉,让程序如同两个独立运行的副本。当调用成功时,它会返回两个结果:子进程返回值为0,而父进程则返回子进程的标识符,若出错则返回-1。fork函数的原型为pid_t fork(),这个pid_t类型实际上是int,定义在#include "sys\/types.h"中。使用fork函数时...

fork函数父子进程执行顺序为什么是随机的
因为fork函数是创建子进程的,该函数会返回二次,调用完成之后,即会存在父和子这二个进程,而这两个进程的执行是靠操作系统来进行调度的,所以这两个进程的执行不具备相关性了。

操作系统中父进程与子进程之间的关系
fork之后不exec的话父子进程是共享同一个进程空间的,但对于子进程来说是只读的。 只有在需要的时候才创建新的或者给子进程单独拷贝一个(从父进程那里),这个叫做写时拷贝,大致是这个意思

父进程用fork创建子进程之后,父子进程之间有什么关系?
在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。引用一位网友的话来解释fpid的值为什么在父子进程中不同。“其实就相当于链表,进程形成了链表,父进程的fpid(p 意味point)指向子进程的进程id, 因为子进程没有子进程,所以其fpid为0....

父进程创建子进程与主程序调用子程序有什么不同?
主程序暂停在调用点,主程序开始执行,父进程与子进程同时执行,直到子程序执行完毕返回,子程序开始执行;主程序调用子程序父进程创立子进程后

如何在Linux系统中查看进程的父进程linux查看进程父进程
比如,想看完整的进程树,就用pstree -p;如果仅想查看某个进程的,则用pstree 1234,查看进程号为1234的进程及其父子进程。有时,还可以使用top命令查看进程,这时在top例表中,第2栏显示的就是当前进程的父进程号了。利用上述步骤,就可以完成查看某个Linux系统的进程的父进程的操作。不仅可以帮助...

子进程是什么
具体的,可在进程中通过CreateProcess()函数去创建一个子进程,子进程在全部处理过程中只对父进程地址空间中的相关数据进行访问,从而可以保护父进程地址空间中与当前子进程执行任务无关的全部数据。对于这种情况,子进程所体现出来的作用同函数和线程比较相似,可以看成是父进程在运行期间的一个过程。为此...

linux终端下使用pipe实现父子进程交互
挺简单的,fork一子一父进程,父进程循环读入文件内容,并写进道管道里面,子进程循环从管道接收然后打印出来。撸码辛苦,望采纳。include <stdio.h>#include <stdlib.h>#include <sys\/types.h>#include <sys\/wait.h>#include <unistd.h>#include <string.h>#include <fcntl.h>int main(){pid...

转载:浅谈Cgroups
并通过两个hierarchy的subsystem分别对httpd进程进行cpu,memory及网络带宽的限制。 4、系统中的任何一个task(Linux中的进程)fork自己创建一个子task(子进程)时,子task会自动的继承父task cgroup的关系,在同一个cgroup中,但是子task可以根据需要移到其它不同的cgroup中。父子task之间是相互独立不依赖的。 如下图,...

相似回答