求助

liweiju10 2012-01-11 11:19:48
麻烦高手给我看一下以下程序,如何修改才能在VC下成功运行
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void waiting(),stop();
int wait_mark;
main()
{
int p1,p2;
if(p1=fork()) /*创建子进程p1*/
{
if(p2=fork()) /*创建子进程p2*/
{
wait_mark=1;
signal(SIGINT,stop); /*接收到^c信号,转stop*/
waiting();
kill(p1,02); /*向p1发软中断信号02*/
kill(p2,02); /*向p2发软中断信号02*/
wait(0); /*等待子进程1结束的信号*/
wait(0); /*等待子进程2结束的信号*/
printf("parent process is killed!\n");
exit(0); /*父进程结束*/
}
else
{
wait_mark=1;
signal(SIGINT,stop); /*等待进程2被杀死的中断号02*/
waiting();
lockf(1,0,0);
printf("child process2 is killed by parent!\n");
lockf(1,0,0);
exit(0);
}
}
else
{
wait_mark=1;
signal(SIGINT,stop); /*等待进程1被杀死的中断号02*/
waiting();
lockf(1,0,0);
printf("child process1 is killed by parent!\n");
lockf(1,0,0);
exit(0);
}
}

void waiting()
{
while(wait_matk!=0);
}
void stop( )
{
while(wait_mark=0);
}
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-01-12
  • 打赏
  • 举报
回复
可能需要修改一些头文件,因为linux下和windows下的头文件有些是不同的。其他的方面,比如函数都是产不多的。
void waiting(),stop();
这样声明两个函数还是第一次看到,你是为了省代码行吗?如果不是建议你每个函数的声明单独成行,不然不易于代码的阅读和理解吧。
程序员小迷 2012-01-11
  • 打赏
  • 举报
回复
你需要修改一些函数啊。。
destinyC 2012-01-11
  • 打赏
  • 举报
回复
linux没接触过。。帮顶。。
qq120848369 2012-01-11
  • 打赏
  • 举报
回复
这是linux的东西.
赵4老师 2012-01-11
  • 打赏
  • 举报
回复
为啥不在VirtualBox下运行捏?
liru125504 2012-01-11
  • 打赏
  • 举报
回复
fork
signal
SIGINT
kill
wait
lockf
实现上面的函数

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧