我现在想移植linux下的程序到windows中,但程序中有fork()函数
我想问,在windows下应该如何替换,是用多线程,还是其他机制
本人没有移植经验,想问有哪些网站介绍一些移植方面的知识
解决方案 »
- 如何判断相对路径下的文件是否存在
- 如何遍历一个指定文件夹下的所有文件?急!急!急!!(小妹只有20分了,哪位热心人肯赐教,愿顷其所有)
- Winio如何模拟鼠标操作?
- 最后50分--表的复制--@#$%#%$%^**&((&#$$#@#%$********
- 请问在数据库中用date()怎么表示“公元前2000年-10月-12日”?
- 如何用AT命令modem拨号上网?其他程序怎么使用这个拨号连接?急!!
- 请教:ATL和ActiveX做的控件.dll和.ocx最主要的区别?
- 为什么GetSaveFileName函数在98下不能显示
- 关于typedef的简单问题!
- 请问怎样自动调节Edit Control的宽度=文字的长度?
- 从CWnd继承的类实例,如何在运行时调整该实例窗口的大小呢?
- 编译时,屏蔽警告信息(warning) 如何做(十万火急,在线等)
CreateProcess,ShellExecuteEx,WinExec in win32
CreateProcess吧!
pid_t fork(void);
pid_t vfork(void);返回值:
-1 : 失败。0 : 子程序。>0 : 将子程序的process id传回给父程序。在Linux下fork()及vfork()是相同的东西。范例一: fork.c在这个范例中,我们示范fork()的标准用法。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>void main(void)
{
pid_t pid;
printf("hello\n");
pid = fork();switch (pid) {case -1: printf("failure!\n"); break;case 0: printf("I am child!\n"); break;default: printf("my child is %d\n",pid); break;}for (;;) { /* do something here */ }
}编译:gcc -o ex1 fork.c执行结果:./ex1 &
hello
my child is 8650
I am child!我们可以见到,使用fork(),可将一个程式分岐成两个。在分歧之前的程式码只执行一次。检验行程:ps | grep ex18649 p0 R 0:40 ./ex18650 p0 R 0:40 ./ex18649是父程序的pid,8650则为子程序的pid。您会需要用到"killall ex1"来杀掉两个行程。