windows下用CreateProcess,参见MSDN的示例。
控制进程间的访问
CreateFileMapping可以在进程间共享内存,socket、NamePipe可以用于进程间通信。CreateMutex/CreateSemaphore可以用于进程间同步。
任何一种编程语言,启动进程和关闭进程都是跟 *** 作系统相关的 *** 作,python中与 *** 作系统打交道的话,推荐使用os模块。
ossystem() 函数可以启动一个进程,执行完之后返回状态码。
osfork() 复制一个进程,如果是子进程返回0,如果是父进程返回子进程的pid,使用这个函数的时候,建议你学习一下linux编程的知识。
ospopen 以管道的方式创建进程。
osspawnl 也可以创建进程,并能指定环境变量。
oskill(pid, sig) 关闭一个进程,pid是进程号,sig是信号。与fork配合使用,例如你刚才用fork创建了一个子进程,它的pid是11990, 那么调用
oskill( 11990, signalCTRL_BREAK_EVENT)
就以ctrl+c的方式杀死了这个进程。
另外还有一个模块multiprocessing,这个模块封装了很多创建进程和进程间通信的 *** 作,可以让你发挥多核的威力。
调用wait或waitpid有三种不同的情况发生:
1、如果其所有子进程都还在运行,则阻塞
2、如果一个子进程终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回
3、如果它没有任何子进程,则立即出错返回
如果进程由于接收到SIGCHLD信号而调用wait,则可期望wait会立即返回,但是如果在任意时刻调用wait,则进程可能会阻塞。
在一个子进程终止前,wait使其调用者阻塞,而waitpid有一个选项,可使调用者不阻塞。
waitpid并不等待在其调用之后的第一个终止子进程,他有若干选项,可以控制他所等待的进程。
调用函数的时候,函数就开始了。return的时候结束。
以上虽然是一个非常一般性的回答,但是事实确实如此。
程序开始时调用主函数,于是主函数开始了。直到主函数return。主函数结束。
别的函数和主函数也没啥区别啊,调用它的时候就开始了,return就结束了。
至于进程吗。其实跟函数这个概念一起讨论很奇怪。
反正进程开始的时候,入口就是主函数。主函数结束了,进程也要结束了。
当然了,这两个不能完全画等号。。。因为主函数结束了,一般还要有很多系统的调用,才能让该进程结束的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)