主进程会等待子进程结束之后再退出,而主线程 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 0%
等待结束
<em>子</em><em>进<em>程</em></em>先于父<em>进<em>程</em></em><em>退出</em>时,如果父<em>进<em>程</em></em>没有调用wait和waitpid函数,<em>子</em><em>进<em>程</em></em>就<em>会</em>进入僵死状态。如果父<em>进<em>程</em></em>调用了wait或waitpid函数,就不<em>会</em>使<em>子</em><em>进<em>程</em></em>变为僵尸<em>进<em>程</em></em>。这两个函数的声明如下: #include #include pid_t wait(int *statloc); pid_t waitpid(pid_t pid, int *statloc, int options);
(面试题)模拟 需要等待多个结束之后执行后续的代码的实现
解法1. Thread.join方法 import java.util.Vector; public class Test { public static void main(String[] args) throws InterruptedException { /* Vector集合: JDK1.0 底层也是数组 是最早期的同步集合 也就意味着是单线<em>程</em> 效率低 ...
如果结束退出,由fork()产生的立刻结束吗?
如题。
select,退出产生EINTR信号么?
while(1) rn rn /*提示连接哪种服务*/rn ...rn if((chpid = fork()) == 0)rn rn close(pfd[0]);rn dup2(pfd[1], 5);rn close(pfd[1]);rn execlp("xterm", "xterm", "-e", "./echo_cli", addr, (char *) 0);rn rn else rn FD_ZERO(&rset);rn while(1)rn rn maxfdp1 = max(pfd[0], fileno(stdin)) + 1;rn FD_SET(pfd[0], &rset);rn FD_SET(fileno(stdin), &rset);rn select(maxfdp1, &rset, NULL, NULL, NULL);rn if(FD_ISSET(pfd[0], &rset))rn rn if((nread = read(pfd[0], buff, MAXLINE)) > 0) rn rn buff[nread] = 0; rn fputs(buff, stdout);rn else break;rn rn if(FD_ISSET(fileno(stdin), &rset))rn rn if((nread = read(fileno(stdin), buff, MAXLINE)) > 0)rn fputs("Do not type in the parent window!\n", stdout);rn rn rn elsern rn if(errno == EINTR)rn break;rn rn rnrnrnvoidrnsig_chld(int signo)rnrn pid_t pid;rn int stat;rn char buff[MAXLINE];rn while((pid = waitpid(-1, &stat, WNOHANG)) > 0)rn rn sprintf(buff, "---Disconnected from server...---\n");rn fputs(buff, stdout);rn rn return;rnrnrn我写了一个socket连接的代码,进入<em>子</em><em>进<em>程</em></em>后<em>会</em>产生一个xterm窗口与服务器进行通信,我希望在开启xterm窗口后,rn1创建一个管道与夫<em>进<em>程</em></em>通信,传输一些连接信息rn2如果在parent继续输入,则<em>会</em>提示Do not type in the parent window!rn3xterm通过ctrl D 或 ctrl C<em>退出</em>后,<em>主</em><em>进<em>程</em></em>回到外层的while循环继续询问要连接哪种服务rnrnrn为了做到这三点,定义了信号处理函数来处理SIG_CHLD,一旦<em>子</em><em>进<em>程</em></em><em>退出</em>就<em>会</em>打印---Disconnected from server...并rn并在<em>主</em><em>进<em>程</em></em>里用select监听管道的输出端pfd[0]和stdin,哪个描述符产生了可读信息就打印rnrnrn可是现在一旦<em>退出</em>xterm(<em>子</em><em>进<em>程</em></em>),父<em>进<em>程</em></em>窗口就<em>会</em>停在---Disconnected from server...---处,不<em>会</em>返回外层的while(1)循环,我认为此时父<em>进<em>程</em></em>应该还阻塞在为select写的内层while(1)里,可是如何通知<em>主</em><em>进<em>程</em></em><em>子</em><em>进<em>程</em></em>已经<em>退出</em>呢?rn可以通过判断errno==EINTR么?我在内层while(1)里加了判断errno的代码,但是没有什么用,请高手赐教rn
线等待所有线执行完结束
import threading import time def task(): for i in range(10): print("工作中...") time.sleep(0.3) if __name__ == '__main__': # 创建<em>子</em>线<em>程</em> # 1. daemon = True 表示守护<em>主</em>线<em>程</em>,<em>主</em>线<em>程</em><em>退出</em><em>子</em>线<em>程</em>销毁 ...
python高级进阶_16_代码证明等待结束互不干扰
我们在fork 创建<em>子</em><em>进<em>程</em></em>的时候,有个特点就是 <em>主</em><em>进<em>程</em></em>和<em>子</em><em>进<em>程</em></em>互不影响, 但是 我们在用Process 类创建的<em>子</em><em>进<em>程</em></em>就需要<em>等待</em> <em>子</em><em>进<em>程</em></em>全部<em>结束</em>后然后<em>再</em><em>结束</em><em>主</em><em>进<em>程</em></em>。 下边我们验证两个问题: <em>主</em><em>进<em>程</em></em>的和<em>子</em><em>进<em>程</em></em>之间数据隔离 <em>主</em><em>进<em>程</em></em><em>等待</em><em>子</em><em>进<em>程</em></em><em>结束</em>后<em>再</em><em>结束</em> 下边的代码 打印都是一样,说明他们公用一个数据 a=1000 def test(): global a a+=1 prin...
线等待线执行完结束
<em>主</em>线<em>程</em>–<em>子</em>线<em>程</em>1–<em>子</em>线<em>程</em>1的<em>子</em>线<em>程</em>1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |-<em>子</em>线<em>程</em>1的<em>子</em>线<em>程</em>2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nb
等待退出的问题
CreateProcess创建<em>子</em><em>进<em>程</em></em>,WaitForSingleObject<em>等待</em><em>子</em><em>进<em>程</em></em><em>退出</em>,都没问题rnrn现在情况是<em>子</em><em>进<em>程</em></em>可能又启动了其他<em>进<em>程</em></em>,我需要等所有<em>子</em><em>进<em>程</em></em><em>退出</em>后WaitForSingleObject才返回,该怎么处理?
线为什么结束
看了篇文章说:pthread_join使一个线<em>程</em><em>等待</em>另一个线<em>程</em><em>结束</em>(可以理解),若没有pthread_join<em>主</em>线<em>程</em><em>会</em>很快<em>结束</em>从而使整个<em>进<em>程</em></em><em>结束</em>(这句话理解不了啊,请看代码)。rnrnmain()rnrnpthread_t tid_produce[10];rnSet_concurrency(10);rnfor(int i=0;i<10;i++)rnrnPthread_join(&tid_produce[i],NULL);///////*****rnrnrnreturn 0;rnrnrn我的问题就是:为什么需要*****行呢?######行在“return 0”之前,换句话说就那10个<em>子</em>线<em>程</em><em>结束</em><em>之后</em>才能顺序执行到“return 0”,那么这里还存在<em>主</em>线<em>程</em>(main函数)先于那10个<em>子</em>线<em>程</em><em>结束</em>的情况?rnrn
linux下fork一个,处理完之后退出,但退出,这是就变成了僵,有什么办法避免?
我想的是如果<em>子</em><em>进<em>程</em></em><em>退出</em><em>之后</em>,该<em>子</em><em>进<em>程</em></em>在系统中就不存在了.如果实现呢?rn谢谢!rn
线等待线结束
对于多线<em>程</em>而言,一个<em>主</em>要的难题就是如何线<em>程</em>是否都已经执行<em>结束</em>。 也就是说,需要在<em>主</em>线<em>程</em>开启<em>子</em>多线<em>程</em>后,直到<em>子</em>线<em>程</em>全部执行<em>结束</em>为止,回到<em>主</em>线<em>程</em>。
如何等待多个线退出
线<em>程</em>的实现继承了CWinThread.rn在<em>主</em><em>进<em>程</em></em>里启动了多个线<em>程</em>,而<em>主</em><em>进<em>程</em></em>要<em>等待</em>线<em>程</em><em>结束</em>后关闭<em>程</em>序。rn如何用waitmultipleobject?rn谢谢。
如何等待多个结束
各位仁兄们,小弟有问题请教,就是,我fork了6个<em>子</em><em>进<em>程</em></em>,分别做不同的数据库操作,我要等这6个操作全部完成后,在由父<em>进<em>程</em></em>继续做操作。那么我的问题就是,我如何知道所有的<em>子</em><em>进<em>程</em></em>什么时候都<em>结束</em>呢。请最好能举例说明,谢谢
等待结束wait()和waitpid()
父<em>子</em><em>进<em>程</em></em>有时需要简单的<em>进<em>程</em></em>间同步,如父<em>进<em>程</em></em><em>等待</em><em>子</em><em>进<em>程</em></em>的<em>结束</em>。linux提供了以下两个<em>等待</em>函数:wait(),waitpid().需要包含头文件:#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;sys/wait.h&amp;gt;1)  pid_t wait(int *status);功能:<em>等待</em>任一<em>子</em><em>进<em>程</em></em>终止,如果<em>子</em><em>进<em>程</em></em>终止了,此函数<em>会</em>回收<em>子</em><em>进<em>程</em></em>的资源。调用wait函数的进...
等待结束的问题
s_proc是一个值为"C:\\windows\\explorer.exe \"www.163.com\""的字符串,为什么打开的网页还没关闭呢,AfxMessageBox消息框就已经弹出来了?rnrnSTARTUPINFO si = sizeof(STARTUPINFO);rnPROCESS_INFORMATION pi;rnif ( CreateProcess(NULL,(LPTSTR)(LPCTSTR)s_proc,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi))rnrn DWORD dw = WaitForSingleObject(pi.hProcess,INFINITE);rn if ( dw == WAIT_OBJECT_0)rn rn AfxMessageBox(_T("Process closed!")); //rn CloseHandle(pi.hThread);rn CloseHandle(pi.hProcess);rn rn
等待退出(二)
n 物联网技术离不开Linux开发基础nnn Linux<em>进<em>程</em></em>是很重要的开发概念,通过本套视频,掌握Linux<em>进<em>程</em></em>的开发,解决Linux<em>进<em>程</em></em>疑问。nnn 是Linux系统编<em>程</em>小白的向导,是Linux系统开发工<em>程</em>师的视频字典,欢迎观看!n
线线退出问题
<em>主</em>线<em>程</em>、<em>子</em>线<em>程</em>调用exit, pthread_exit,互相产生的影响。 1、在<em>主</em>线<em>程</em>中,在main函数中return了或是调用了exit函数,则<em>主</em>线<em>程</em><em>退出</em>,且整个<em>进<em>程</em></em>也<em>会</em>终止, 此时<em>进<em>程</em></em>中的所有线<em>程</em>也将终止。因此要避免main函数过早<em>结束</em>。 2、在<em>主</em>线<em>程</em>中调用pthread_exit,   则仅仅是<em>主</em>线<em>程</em><em>结束</em>,<em>进<em>程</em></em>不<em>会</em><em>结束</em>,<em>进<em>程</em></em>内的其他线<em>程</em>也不<em>会</em><em>结束</em>, 知道所有线<em>程</em><em>结束</em>,
我想在线退出等待另一个线结束退出,可是......
我用的是WaitForSingleObject(线<em>程</em>句柄,INFINITE);可是这个函数总是立刻返回,显然<em>等待</em>的线<em>程</em>不应该是这么快就<em>结束</em>了的,所以感觉不对劲.我把那个线<em>程</em>换成死循环的那种,WaitForSingleObject同样是立刻返回,这明显有问题啊.rnrn大家帮帮忙,到底出了啥问题.
等待退出(一)
n 物联网技术离不开Linux开发基础nnn Linux<em>进<em>程</em></em>是很重要的开发概念,通过本套视频,掌握Linux<em>进<em>程</em></em>的开发,解决Linux<em>进<em>程</em></em>疑问。nnn 是Linux系统编<em>程</em>小白的向导,是Linux系统开发工<em>程</em>师的视频字典,欢迎观看!n
异常退出 在线等待
我在我的<em>主</em><em>进<em>程</em></em>中使用fork语句创建了一系列<em>子</em><em>进<em>程</em></em>,数目不定。rn这里是5个,第5个<em>子</em><em>进<em>程</em></em>在执行语句rnsystem((char*)("rm "+path+" -Rf").c_str());rn非法<em>退出</em>了。但这个语句确实被执行了(因为改路径已经被删除了)rn其他4个<em>进<em>程</em></em>由于条件关系,不执行此句都正常<em>退出</em>了。rn以下是代码片断:rn switch(this->job_type) rn case 1:rn sql = "select id from jobstatus where loaded_timeGetValue(i,0);rn DIR * dir;rn if((dir=opendir(path.c_str())) == NULL)rn continue;rn closedir(dir);rn// cout<
的通信(handler)
首先是<em>主</em><em>进<em>程</em></em>与<em>子</em><em>进<em>程</em></em>的通信实现:首先在oncreat中: new CustomThread().start(); 需要使用的时候:mHandler.obtainMessage(PLAY_VIDEO).sendToTarget(); <em>主</em><em>进<em>程</em></em>处理: class CustomThread extends Thread { @Override public void ru
关闭的对话框
<em>主</em><em>进<em>程</em></em>传递<em>主</em>对话框的指针(<em>主</em>对话框已打开了<em>子</em>对话框)到<em>子</em><em>进<em>程</em></em>,我想实想<em>子</em><em>进<em>程</em></em>关闭<em>主</em><em>进<em>程</em></em>的<em>子</em>对话框,有什么方法?
终止处理方式
许多PHP<em>程</em>序员在熟悉LNMP/LAMP应用开发<em>之后</em>,尝试使用Swoole进行长生命周期、异步非阻塞、Socket网络通信、高性能高并发的编<em>程</em>开发,该教<em>程</em>内容从一个又一个的实例开始讲解,让学员清晰认识swoole的各个模块的作用。
执行顺序问题
import multiprocessing import time import os # 工作任务 def work(): current_process = multiprocessing.current_process() print(&amp;quot;work:&amp;quot;, current_process) print(&amp;quot;work<em>进<em>程</em></em>编号:&amp;quot;, current_process.pid...
Junit单元测试线退出线退出
当在使用junit单元测试时,如果<em>再</em><em>主</em>线<em>程</em>中加入了<em>子</em>线<em>程</em>,当<em>主</em>线<em>程</em><em>结束</em>时,<em>子</em>线<em>程</em>也随着<em>结束</em>。 package com.thread.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotyp
线等待线结束代码
我在工作的过<em>程</em>中遇到一个问题,需要<em>主</em>线<em>程</em>等等所有<em>子</em>线<em>程</em>执行完后<em>再</em>做某件事情,在网上找了很多代码,都没有真正解决这个问题. 现在我解决了这个问题,把代码共享出来供大家参考. 代码中有注释和注意事项,相信大家看过后就<em>会</em>觉得非常简单.
C++线等待线结束
<em>主</em>线<em>程</em>:rn hThread = (HANDLE)_beginthreadex( NULL, 0, &ThreadFun, NULL, 0, &nThreadID ); rnrnStartWork()rnrnOnDownloadButton(index);//执行其他操作rnrn-------------------------------------------------------------------------------------------rnrnBOOL CAuto_DownloadDlg::StartWork(int nThreadIndex)rnrn UpdateData(TRUE);rnrn //初始化rn PostThreadMessage(m_tid[nThreadIndex], WM_INIT_DISK, NULL, NULL);rn //下载rn PostThreadMessage(m_tid[nThreadIndex], WM_DOWN_FILE, NULL, NULL);rnrnrnDWORD WINAPI ThreadFun(LPVOID lp)rnrn int nIndex = (int)lp;rn MSG msg;rnrn while(GetMessage(&msg, NULL, 0, 0))rn rn DWORD dwRtn = 0;rn switch(msg.message)rn rn case WM_INIT_DISK:rn g_pDlg->InitDisk(nIndex); rn break;rn case WM_DOWN_FILE: rn ...rn rn rn
线等待多个线结束
//<em>主</em>线<em>程</em>定义 public CountDownLatch m_threadSignal;   //<em>主</em>线<em>程</em>初始化  m_threadSignal = new CountDownLatch(10);   //<em>主</em>线<em>程</em><em>等待</em>// wait for all started threads (rendevouz)try {m_threadSignal.await(); } catch (Inte...
线如何等待线退出
<em>主</em>线<em>程</em>如何<em>等待</em><em>子</em>线<em>程</em><em>退出</em>?
退出不工作,为什么呢?
如题
等待所有线结束后,线退出
console<em>程</em>序:rnrnmain()rnrn for(int i=0;i<100;i++)rn rn 用线<em>程</em>池开启一个新线<em>程</em>;rn rn rn <em>等待</em>上面开启的所有线<em>程</em>执行完后,才继续往下面执行。[color=#FF0000]//这一句要怎么实现。[/color]rn
线如何等待线结束?(非阻塞等待
请问在<em>主</em>线<em>程</em>里如何<em>等待</em><em>子</em>线<em>程</em>的<em>结束</em>?rn例如我在button的单击事件中,创建一线<em>程</em>执行某函数,rnthread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);rn那么我在窗口中如何<em>等待</em>该线<em>程</em><em>结束</em>?
一旦线结束这个结束了吗?
看到什么前台线<em>程</em>和后台线<em>程</em>的东西,说是如果这个<em>进<em>程</em></em>下的线<em>程</em>都是前台线<em>程</em>的话,<em>程</em>序就要所有已启动的线<em>程</em>都运行完毕才<em>会</em><em>结束</em>。
请问如何等待所有的结束继续?
父<em>进<em>程</em></em>建立了多个<em>子</em><em>进<em>程</em></em>,请问如何<em>等待</em>所有的<em>子</em><em>进<em>程</em></em><em>结束</em>后<em>再</em>继续父<em>进<em>程</em></em>?rn我试过wait()了多次,不过除了第一个wait()外,其它的wait()都<em>会</em>立刻返回。
在线等待,如何在结束另一个
我在自己的<em>程</em>序中又启动了另一个可执行<em>程</em>序,这个是个FLASH,充满了整个屏幕,因此我的<em>主</em><em>程</em>序得不到鼠标消息,可是我想用点一下鼠标来<em>结束</em>这个FLASH,不可行。rn我怎么办,请高手一定一定要指点一下,我急着用,拜托了!
wait/waitpid//结束,父等待吗?
waitpid第三个参数什么意思?<em>子</em><em>进<em>程</em></em>exit是<em>退出</em>,用return什么作用?rn[code=C/C++]rn#include rn#include rn#include rn#include rnint main()rnrn int pid1 = fork();rn int pid2;rn if(pid1>0) pid2 = fork();rn if(pid1==0)//<em>子</em><em>进<em>程</em></em>一rn printf("<em>子</em><em>进<em>程</em></em>一开始运行,马上睡5s\n");rn sleep(5);rn exit(123);rn rn if(pid2==0)//<em>子</em><em>进<em>程</em></em>二rn printf("<em>子</em><em>进<em>程</em></em>二开始运行,马上睡3s\n");rn sleep(3);rn exit(234);rn rn //以下是父<em>进<em>程</em></em>rn printf("父<em>进<em>程</em></em>开始<em>等待</em><em>子</em><em>进<em>程</em></em>一\n");rn int r1 = 0;rn waitpid(pid1,&r1,0); rn printf("父<em>进<em>程</em></em>开始<em>等待</em><em>子</em><em>进<em>程</em></em>二\n");rn int r2 = 0;rn waitpid(pid2,&r2,0);rn if(WIFEXITED(r1))rn printf("<em>子</em><em>进<em>程</em></em>一的返回码:%d\n", WEXITSTATUS(r1));rn rn if(WIFEXITED(r2))rn printf("<em>子</em><em>进<em>程</em></em>一的返回码:%d\n", WEXITSTATUS(r2));rn rnrnrnrn[/code]
等待退出
<em>等待</em>和<em>退出</em>实际上是父<em>子</em><em>进<em>程</em></em>之间的一种交互,完成<em>子</em><em>进<em>程</em></em>的资源回收。 <em>进<em>程</em></em><em>等待</em> wait()系统调用可以用于父<em>进<em>程</em></em><em>等待</em><em>子</em><em>进<em>程</em></em>的<em>结束</em>: 关于wait()的实现,实际上是把<em>进<em>程</em></em>的状态改为 sleep; <em>子</em><em>进<em>程</em></em><em>结束</em>时通过exit()向父<em>进<em>程</em></em>返回一个值; 父<em>进<em>程</em></em>通过wait()接受并处理返回值。 那么这两者谁先发生呢?先后顺序有什么影响? 1. 当有<em>子</em><em>进<em>程</em></em>存活时,父<em>进<em>程</em></em>进入<em>等待</em>状态,<em>等待</em><em>子</em>...
线等待线执行结束执行的实现方式
实现一: 通过一个线<em>程</em>安全的全局变量来控制, 每个<em>子</em>线<em>程</em>执行<em>结束</em>该全局变量减一, <em>主</em>线<em>程</em>判断全局变量为0时<em>再</em>向下执行 status.set(3); try { threadPoolTaskExecutor.execute(new Innerthread1(paperId, clazzId, clazzScoreResult, personalScoreAdapter)); } ca
等待异步等待方式
首先我们来看两个函数,wait和waitpid函数。       一个<em>进<em>程</em></em>在终止时<em>会</em>关闭所有的文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息;如果是正常终止则保存着<em>退出</em>状态,如果是异常终止则保存着导致该<em>进<em>程</em></em>终止的信号是哪个。这个<em>进<em>程</em></em>的父<em>进<em>程</em></em>可以调用wait或waitpid获取这些信息,然后彻底清除掉这个<em>进<em>程</em></em>。       当一个<em>进<em>程</em></em>正常或异常终止时,内核就
如何使“线等待线”执行结束继续执行?
[code=Java]rnpublic static void main(String[] args)rn System.out.println("start");rn for (int i = 0 ; i < 10; i ++)rn Thread t = new SelectThread(sql,i*interval+1,interval, result);rn t.start();rn t.join();rn rn System.out.println("end");rnrn[/code]rnrn以上是我的代码,这样可以吗?
怎么让线等待线结束往下执行?
RT
java多线-等待所有线执行结束继续执行线
CountDownLatch,一个同步辅助类,在完成一组正在其他线<em>程</em>中执行的操作之前,它允许一个或多个线<em>程</em>一直<em>等待</em>。 <em>主</em>要方法  public CountDownLatch(int count);  public void countDown();  public void await() throws InterruptedException  构造方法参数指定了计数的次数 cou...
线等待线运行结束完成的效果如何实现
<em>主</em>线<em>程</em>抛出一个<em>子</em>线<em>程</em>异步处理一些东西,这时<em>主</em>线<em>程</em>要<em>等待</em><em>子</em>线<em>程</em>运行完成<em>再</em>完成(其实我是为了统计运行时间的)。rn这里抛出的<em>子</em>线<em>程</em>可能递归的调用自己,就是<em>再</em>抛一个他的<em>子</em>线<em>程</em>出来,但是到底一共抛多少,事先是不知道的。rn应用场景:rn1)多线<em>程</em>扫描文件夹内的文件,遇到文件夹内有<em>子</em>文件夹,要递归调用扫描线<em>程</em>的,等到全部扫描完成后,返回结果,显示;rn2)多线<em>程</em>快速排序,第一次肯定是单线<em>程</em>的,第一次排序完成后,<em>会</em>分两半,这两半多线<em>程</em>排,递归调用了这个排序线<em>程</em>,这两半很有可能,极大有可能<em>再</em>各分两半,也就是<em>会</em>有4个<em>子</em>线<em>程</em>的<em>子</em>线<em>程</em><em>再</em>排序。rnrn我试过网上的那个 CountDownLatch ,但是他只能实现定义好<em>子</em>线<em>程</em>的数量,但是在以上两种情景下,事先你是不知道<em>会</em>有多少个<em>子</em>线<em>程</em>的!rnrnc++里有个WaitForSingleObject,java里有么?
线线结束问题
<em>进<em>程</em></em>中线<em>程</em>之间的关系 线<em>程</em>不像<em>进<em>程</em></em>,一个<em>进<em>程</em></em>中的线<em>程</em>之间是没有父<em>子</em>之分的,都是平级关系。即线<em>程</em>都是一样的, <em>退出</em>了一个不<em>会</em>影响另外一个。 但是所谓的”<em>主</em>线<em>程</em>”main,其入口代码是类似这样的方式调用main的:exit(main(…))。 main执行完<em>之后</em>, <em>会</em>调用exit()。 exit() <em>会</em>让整个<em>进<em>程</em></em>over终止,那所有线<em>程</em>自然都<em>会</em><em>退出</em>。...
Day28、的管理(创建、退出)、
一、<em>进<em>程</em></em>的管理 1、什么是<em>进<em>程</em></em>? <em>进<em>程</em></em>是<em>程</em>序运行的一个实例。 PCB(<em>进<em>程</em></em>控制块) pid:<em>进<em>程</em></em>号 2、Linux<em>进<em>程</em></em>的组织管理方式 在linux操作系统中,所有的用户<em>进<em>程</em></em>组成了一棵树,<em>进<em>程</em></em>和<em>进<em>程</em></em>之间的关系是父<em>子</em>关系,或兄弟关系。 tarena@tarena-virtual-machine:~$ pstree init─┬─NetworkManager─┬─dhclient
nginx异常退出
nginx经常跑着跑着就挂了。dmesg里,3次异常<em>退出</em>的内容如下rnrnnginx[13882]: segfault at fffffffffffffff0 ip 0000003c04f298d8 sp 00007fffe04de438 error 5 in libc-2.12.so[3c04e00000+18b000]rnnginx[14884]: segfault at 0 ip 0000003c04f29460 sp 00007fff6f2bb5f8 error 4 in libc-2.12.so[3c04e00000+18b000]rnnginx[17615]: segfault at fffffffffffffff0 ip 0000003c04f298d8 sp 00007fffa11c12d8 error 5 in libc-2.12.so[3c04e00000+18b000]rnrn求大神!
请教一个结束等待退出等待的办法
现<em>程</em>序当按下功能按钮后,<em>程</em>序进入<em>等待</em>串口事件状态, 现想让<em>程</em>序在一分钟后仍未接收到串口事件<em>退出</em><em>等待</em>如何实现?向高手请教rn试过设置定时器定时,但不行
fork+nohup出问题,不能等待结束
while (1)rnrn if ( (child = fork()) == 0)rn rn execlp(.........);rn rn while(waitpid( -1, NULL, 0 ) > 0 );rn rnrnrnrnrn<em>程</em>序结构大概就是这个样<em>子</em>,直接运行正常,但用如果用nohup program的话,while(waitpid( -1, NULL, 0 ) > 0 );不起作用,结果<em>会</em>造成后面的<em>进<em>程</em></em>fork不到,想问一下这样的话有什么办法可以解决,如果能说说原因的话那就更能让我们这些初学者,多学点东东拉,
等待结束 waitpid wait
我们一直在强调一个概念就是<em>进<em>程</em></em>是一个<em>程</em>序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是<em>程</em>序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个<em>进<em>程</em></em>所保存的数据结构(状态信息)等。 当一个<em>进<em>程</em></em>由于某种原因停止时,内核并不是直接将为它保存的状态信息从内核移除,相反,<em>进<em>程</em></em><em>会</em>一直被保持在一种已经终止的状态,直到被它的父<em>进<em>程</em></em>回收,当父<em>进<em>程</em></em>回收已经终止的<em>子</em><em>进<em>程</em></em>时,内核<em>会</em>将<em>子</em><em>进<em>程</em></em>的
先pthread_cancel()pthread_join(),线退出?
代码在这:rnhttp://q.cnblogs.com/q/29049/
linu0.11父等待退出退出原理分析
// 释放pcb的一页内存,重新调度<em>进<em>程</em></em> void release(struct task_struct * p) { int i; if (!p) return; for (i=1 ; i&lt;NR_TASKS ; i++) if (task[i]==p) { task[i]=NULL; free_page((long)p); schedule(); ...
Qprocess中,发送消息,无法收到
用Ruby写的<em>程</em>序,rn<em>进<em>程</em></em>是UI界面:rn@pro = Qt::Process.new()rnrnconnect(@pushButton_1, SIGNAL('clicked()'),self, SLOT('handle_clicked()'))rnconnect(@pushButton_3, SIGNAL('clicked()'),self, SLOT('sendToClient()'))rnconnect(@pro, SIGNAL('readyReadStandardOutput()'),SLOT('readResult()'))rnconnect(@pro, SIGNAL('finished(int,QProcess::ExitStatus)'),SLOT('finished()'))rnrndef sendToClientrn number = @pro.write(@lineEdit_1.text())rn puts numberrnendrnrndef handle_clickedrn @pro.start("ruby test1.rb")rnendrnrndef finishedrn @textEdit.append("后台<em>程</em>序运行<em>结束</em>。")rnendrnrndef readResultrn data = @pro.readAllStandardOutput()rn @textEdit.append(data.to_s.chomp!)rnendrn点击按钮1,开启<em>子</em><em>进<em>程</em></em>pro,点击按钮2,把lineEdit_1里的值通过write()传送给pro。rn绑定信号和槽,<em>子</em><em>进<em>程</em></em>中有标准输出时,输出到<em>主</em><em>进<em>程</em></em>的textEdit中。rnrn<em>子</em><em>进<em>程</em></em>:rn puts "后台<em>程</em>序正在运行1..."rn STDOUT.flushrnrn f1 = File.new('1.txt','w')rn f2 = File.new('2.txt','w')rnrn STDOUT.puts "请输入用户名(首次登陆即为注册,用户名长度不超过20个字符。):"rn STDOUT.flushrn rn user_name = STDIN.gets.chomprn f1.puts user_namernrnrn STDOUT.puts "请输入密码(密码长度不超过16个字符)"rn STDOUT.flushrnrn password = STDIN.gets.chomprn f2.puts passwordrnrn问题如下:现在可以实现,<em>主</em><em>进<em>程</em></em>接收<em>子</em><em>进<em>程</em></em>的标准输出,然后点击按钮后,向<em>子</em><em>进<em>程</em></em>发送用户名,<em>子</em><em>进<em>程</em></em>收到用户名,但是收到<em>之后</em>的"请输入密码(密码长度不超过16个字符)"却无论如何也无法输出,加了向文件中的写操作后发现,只有1.txt被写入了,而且<em>子</em><em>进<em>程</em></em>是不停的接收user_name ,比如点击了3次按钮,发送了三个字符串向<em>子</em><em>进<em>程</em></em>,<em>子</em><em>进<em>程</em></em><em>退出</em>后,一股脑的向1.txt中写了3个字符串。rn其实就是<em>子</em><em>进<em>程</em></em>停止在rnuser_name = STDIN.gets.chomprn f1.puts user_namern这两行里了,貌似在循环读取。rnrn一个下午加晚上都不知道问题出在哪里,麻烦大家帮我看看,感激不尽。
管道中的父要不要等待退出
我写的函数如下:rnvoid* io_open()rnrn int p_out[2];rn int pid;rnrn pipe(p_out);rn pid = fork();rn if (pid==0)//child, write rn close(p_out[0]);rn dup2(p_out[1], 1);rn close(p_out[1]);rn execl(io_path, io, NULL); //执行io_path下的io<em>程</em>序rn else if (schk_pid > 0)//father, readrn close(p_out[1]); rn if ((fp_io=fdopen(p_out[0], "r")) == NULL)rn syserr("fdopen p_out[0]"); rn waitpid(&pid, NULL);//这句到底要不要?rn close(p_out[1]);rn rn return 0;rnrn请问,有的书上没有写waitpid这句,到底要不要呢?注意,io<em>程</em>序可以接收<em>退出</em>信号。
如何监控状态?如果非正常退出呢?
如题,在多<em>进<em>程</em></em>处理过<em>程</em>中,如果<em>子</em><em>进<em>程</em></em>非正常<em>退出</em>了怎么办?rn我查到这样一个函数:rnpid_t wait(int *status)     rn <em>进<em>程</em></em>一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前<em>进<em>程</em></em>的某个<em>子</em><em>进<em>程</em></em>已经<em>退出</em>,如果让它找到了这样一个已经变成僵尸的<em>子</em><em>进<em>程</em></em>, wait就<em>会</em>收集这个<em>子</em><em>进<em>程</em></em>的信息,并把它彻底销毁后返回;如果没有找到这样一个<em>子</em><em>进<em>程</em></em>,wait就<em>会</em>一直阻塞在这里,直到有一个出现为止。rnrn但是如果使用wait的话,有一个问题就是,一旦使用了wait,那么<em>主</em><em>进<em>程</em></em>rn就没办法做其他的事情了。rn有没有办法使得wait超时<em>退出</em>阻塞?我想了两个办法,大家给点意见看是否可行:rn1.用alarm做一个定时器,定时器响应时候的SIGALRM是否<em>会</em>是wait响应而<em>退出</em>。(因为信号是<em>会</em>影响到wait函数的)rn2.使用多<em>进<em>程</em></em>+多线<em>程</em>模式(类似apache的MPM),在<em>主</em><em>进<em>程</em></em>中单独开一个线<em>程</em>执行wait,这时候的阻塞是否<em>会</em>影响其他线<em>程</em>?rnrn如果有其他的好办法,也可以。rn先谢谢回帖的各位了
epoll监听,逻辑处理
我的<em>程</em>序有些问题,就是描述符没有4,如果<em>子</em><em>进<em>程</em></em>产生僵尸<em>进<em>程</em></em>,父<em>进<em>程</em></em>为<em>子</em><em>进<em>程</em></em>收尸有问题。
共享链表的问题
#includern#includern#includerntypedef struct inode1rn rn int data;rn struct inode1 *next; rn inode;rninode *head=NULL;rnmain()rnrn inode *p=NULL,*q=NULL;rn int i=10,pid;rn for(i;i>=1;i--)rn rn p=(inode *)malloc(sizeof(inode));rn if(p==NULL)rn exit(0);rn p->data=i;rn p->next=head;rn head=p;rn p=NULL;rn rn printf("@@@@@@@@@@@@@@@@@@@@@@@\n");rn if(pid=fork()10;i--)rn rn p=(inode *)malloc(sizeof(inode));rn if(p==NULL) rn exit(0);rn p->data=i;rn p->next=head;rn head=p;rn p=NULL;rn rn rn elsern rn sleep(60);rn printf("-------------");rn rn sleep(2);rn p=head;rn while(p!=NULL)rn rn printf("p->data=[%d]\n",p->data);rn p=p->next;rn rn p=head;rn rn while(p!=NULL)rn rn q=p->next;rn free(p);rn p=q;rn rn rnrnrnrnrn打印时为什么总是每个节点都打印双份
有关之间传递数据的问题
<em>主</em><em>进<em>程</em></em>通过createpipe建立匿名管道定向到标准输入、输出上,createpocess调用一个DOS<em>程</em>序(别人的<em>程</em>序,没有源代码,只有接口),通过管道pipe传输参数给<em>子</em><em>进<em>程</em></em>,问题:标准输入到<em>子</em><em>进<em>程</em></em>,<em>子</em><em>进<em>程</em></em>没有接受到任何数据,请问一般是什么原因?rn有没有其他更好的方法
如何在中创建?
我已经成功创建一个<em>主</em><em>进<em>程</em></em>,rn我想在<em>主</em><em>进<em>程</em></em>里头创建<em>子</em><em>进<em>程</em></em>,rn<em>子</em><em>进<em>程</em></em>调用自己封装的一个函数,rn请大家指点,rn能简单写点代码给我最好,rn
CreateProcess管道通信的封装
本类简单的封装了<em>进<em>程</em></em>的创建,以及管道的读取,<em>主</em>要的用途是用c++调用php与python脚本时进行通信。 从管道读取内容的时候,必须预定规则,比如读取一行,行尾的标识符是'\n'还是'\t'之类的,不约定的话,<em>会</em>造成管道阻塞。 向管道写入内容的时候,如果python脚本没有收到回车符'\n',它也<em>会</em>阻塞,所以写入内容的<em>结束</em>符,最好也约定好。 封装类CProcess如下: 头文件Proces
发给的消息问题
我在fork<em>子</em><em>进<em>程</em></em>的时候做了下面操作rn先将<em>子</em><em>进<em>程</em></em>的信息通过<em>主</em><em>进<em>程</em></em>添加完毕,然后发kill消息给正在<em>等待</em>的<em>子</em><em>进<em>程</em></em>让他执行。rn但现在的问题是,我的kill消息比<em>子</em><em>进<em>程</em></em>的signal还要早到达了<em>子</em><em>进<em>程</em></em>,<em>子</em><em>进<em>程</em></em>收到就<em>退出</em>了。。。。rn请问怎么办?rnif((pid=fork()==0)//childrnrn writelog();rn signal(SIGUSR2,emptyfunc);rn sleep(1000);rn ...//开始操作rnrnelse if(pid>0)//fatherrnrn writelog(...);//父<em>进<em>程</em></em>先添加<em>子</em><em>进<em>程</em></em>的<em>进<em>程</em></em>号等信息rn kill(pid,SIGUSR2);rn ......rn
如何保证线线结束之后结束
由于<em>主</em>线<em>程</em>的函数返回的值是<em>子</em>线<em>程</em>的调用函数返回值,所以我必须保证<em>子</em>线<em>程</em>没有<em>结束</em>的时候<em>主</em>线<em>程</em>不能<em>结束</em>,这个要怎么做啊?球大侠rn下面的是我的<em>主</em>线<em>程</em>的这个函数rn[code=c]rnLONG CWTainWebCtrl::WTwainAcquireImage(void)rnrn AFX_MANAGE_STATE(AfxGetStaticModuleState());rnrn // TODO: Add your dispatch handler code herern if(g_maxImgSave > g_pimgList.size())rn rn g_bTerminate = FALSE;rn g_ThreadProcScan = AfxBeginThread(ThreadProcScan,m_hWnd);rn g_ThreadProcScan->m_bAutoDelete = TRUE;rn g_ThreadDrawImg = AfxBeginThread(ThreadDrawImg,m_hWnd); rn g_ThreadDrawImg->m_bAutoDelete = TRUE;rn rn return 0;rnrnrn[/code]rnrn这只是一个粗略的代码 至少返回值是不对的,我需要在这个函数里面返回<em>子</em>线<em>程</em>函数ThreadProcScan的结果作为<em>主</em>线<em>程</em>函数WTwainAcquireImage 的结果rnrn怎么处理 谢谢啦
的信号捕捉函数是否因为另外一个结束而被触发
结果如下,在<em>子</em><em>进<em>程</em></em>(pid1)中设置的信号捕获,只<em>会</em>捕获<em>子</em><em>进<em>程</em></em>(pid1)所创建的孙<em>进<em>程</em></em>(pid2)的信号,即使另外一个<em>子</em><em>进<em>程</em></em>(pid3)比孙<em>进<em>程</em></em>(pid2)先<em>结束</em>,也不<em>会</em>捕捉<em>子</em><em>进<em>程</em></em>3
java并发编线等待线结束 CountDownLatch
1) <em>主</em>线<em>程</em><em>等待</em>线<em>程</em>池 ExecutorService pool = Executors.newFixedThreadPool(20); if(file.exists()&&file.isDirectory()){ File[] listFiles = file.listFiles(); for(File fileTmp:listFiles){ pool.execute(new Ru
VC++ 中线等待线结束的方法
void WaitForThreadExit(void) { DWORD dwRet; //返回值 MSG msg; int wait_count=4; //线<em>程</em>句柄有4个 int nExitThreadCount=0; //记录线<em>程</em><em>退出</em>个数 while(1) { dwRet = MsgWaitForMultipleObj...
java并发-线等待线结束
使用java多线<em>程</em>实现并发,多线<em>程</em>使用比较简单,但要注意一个问题——<em>主</em>线<em>程</em>若要<em>等待</em><em>子</em>线<em>程</em><em>结束</em>需要稍微处理一下。
Python多线线等待所有线结束
from time import ctime import threading import time def a(): #for i in range(5): print('Program a is running... at ', ctime(),u'.线<em>程</em>名为:',threading.current_thread().name ) time.slee...
其他线结束,而线结束,那怎么办?
其他线<em>程</em>未<em>结束</em>,而<em>主</em>线<em>程</em><em>结束</em>,那怎么办?
为什么自动退出?
底层大概以每60毫秒15个字节的速度不停的从串口接收数据(已对缓冲区作保护) 上层另开一个线<em>程</em>在对话框的clistctrl控件中显示这些数据 开始一切正常 一段时间后 对话框自动关闭了
MFC 线等待线退出函数(MsgWaitForMultipleObjects)
void WaitForThreadExit(void) { DWORD dwRet; MSG msg; int wait_count=4;//线<em>程</em>句柄有4个 int nExitThreadCount=0; while(1) { dwRet = MsgWaitForMultipleObjects(wait_count, hArray, FALSE, INFINITE, QS_...
多线线等待所有线退出
在MFC中有MsgWaitForMultipleObjects<em>主</em>线<em>程</em><em>等待</em>分线<em>程</em><em>退出</em>,在vc++.net或CLR c++中使用什么<em>等待</em>分线<em>程</em><em>退出</em>
linux线等待多个线退出
<em>主</em>要问题是在于这几个<em>子</em>线<em>程</em>是死循环,所以<em>主</em>线<em>程</em>是无法得知哪个线<em>程</em><em>会</em>异常<em>退出</em>,也就无法使用pthread_join。最终目的是要在<em>主</em>线<em>程</em>知道哪个<em>子</em>线<em>程</em><em>退出</em>后重启这个<em>子</em>线<em>程</em>。
vc里怎么在线结束结束线
我的想法是 设置一个全局变量flag,在<em>子</em>线<em>程</em>函数里 while(flag);在对话框<em>退出</em>的时候OnDestroy()里,让flag置0;不知道这样行不行?如果这样行的话,OnDestroy将flag置0<em>之后</em>,要sleep几秒<em>等待</em>线<em>程</em><em>结束</em>呢,还是有什么其他的方法可以判断<em>子</em>线<em>程</em>已经<em>结束</em>了?
如何设置线可以随着线结束结束
我用一个<em>主</em>线<em>程</em>开启两个字线<em>程</em>, 当我<em>主</em>线<em>程</em><em>结束</em>的时候, 如何强制两个<em>子</em>线<em>程</em>也<em>结束</em>?rnrn补充问题, <em>主</em>线<em>程</em>也是其父线<em>程</em>用 Abort <em>结束</em>的rnrnrnrn爷线<em>程</em>->父线<em>程</em>-><em>子</em>线<em>程</em>rnrn当父线<em>程</em>被爷线<em>程</em>Abort的时候, <em>子</em>线<em>程</em>也自动<em>结束</em>, 如何弄?
结束等待结束实例代码
Linux系统编<em>程</em>——<em>进<em>程</em></em>的控制:<em>结束</em><em>进<em>程</em></em>、<em>等待</em><em>进<em>程</em></em><em>结束</em>,相关教<em>程</em>如下: http://blog.csdn.net/tennysonsky/article/details/45917409
关于等待结束的问题!
如何在<em>主</em><em>进<em>程</em></em>中创建一个新的<em>进<em>程</em></em>,然后在新<em>进<em>程</em></em>中<em>等待</em><em>主</em><em>进<em>程</em></em>的<em>结束</em>呢?
创建并且等待结束
Processクラスを利用し、プロセスを作成、実行結果を取得する。 ポイント1、WaitForExit() サブプロセス実行完了まで、親プロセスを止まらせる。 ポイント2、ExitCodeプロパティより、サブプロセスの実行結果を取得。 ポイント3、戻り値を付けられる Main で戻り値を返す。   using System; using System.Collections.Gener...
如何等待一个结束???
比如一个WinRAR<em>进<em>程</em></em>在运行,该如何判断WinRAR<em>进<em>程</em></em>是否<em>结束</em>,若WinRAR不<em>结束</em>则<em>等待</em>,直到WinRAR<em>进<em>程</em></em><em>结束</em>才继续下面的操作。rn谢谢
linux下如何等待结束
wait和waitpid是不是只能用在<em>子</em><em>进<em>程</em></em>上??
关于等待结束的问题。
现在有10个<em>进<em>程</em></em>。rn想通过WaitForMultipleObjects函数<em>等待</em>每个<em>进<em>程</em></em><em>结束</em>(第三个参数传递false)。rnrn问题是,想知道,是否每次<em>等待</em>到某个<em>进<em>程</em></em>后,都要把这个函数的nCount,lpHandles参数rn重置?nCount减1到好办,但把lpHandles数组后面的元素迁移的话,总感觉性能不好。rnrn有什么其他解决方法吗?
结束后,线及各个副线句柄关闭的问题
需要一一关闭吗?
让批处理命令执行而不等待结束
让批处理命令执行而不<em>等待</em><em>进<em>程</em></em><em>结束</em> start <em>程</em>序名 call 批处理文件
批处理等待某个结束执行另下一步
rnant clean build rncd d:\perrnrnrnrn第一条语句执行完后执行第二条, 批处理如何写
spawn-fcgi绑定端口,绑定结束结束继承父端口
这些天遇到了一个端口继承的问题,使用spawn-fcgi将<em>程</em>序和端口绑定,<em>程</em>序中开一个<em>子</em><em>进<em>程</em></em>,kill掉父<em>进<em>程</em></em>,<em>子</em><em>进<em>程</em></em><em>会</em>继承父<em>进<em>程</em></em>的端口。 图中是一个简单的demo,该<em>进<em>程</em></em>绑定了6666端口,并且通过subprocess启动了一个while.py<em>进<em>程</em></em>,while<em>进<em>程</em></em>只有一个while(1)循环,确保<em>进<em>程</em></em>不<em>结束</em>。 可以看到6...
JAVA线等待所有线执行完成后线执行
如标题,此功能<em>主</em>要是JDK1.5引入的java.util.concurrent包下的CountDownLatch类,此类据介绍为以线<em>程</em>辅助类,通过线<em>程</em>计数器来实现一个或多个<em>主</em>线<em>程</em><em>等待</em>其下所有<em>子</em>线<em>程</em>执行完后<em>主</em>线<em>程</em><em>再</em>继续执行的功能。         该类只在构造方法中提供了计数器的初始化,没有任何其他接口来修改或者设置此数值,而<em>主</em>线<em>程</em>与<em>子</em>线<em>程</em>之间通过CountDownLatch对象来进行通信控制并发
如何判断一个还是
如何判断一个<em>进<em>程</em></em>是<em>主</em><em>进<em>程</em></em>还是<em>子</em><em>进<em>程</em></em>?请高手指点
UNIX退出
if (p_id=fork())==0) rn ....rn exit(0);rn rnelse rn ...rn rn....rn是否exit()就可<em>退出</em><em>子</em><em>进<em>程</em></em>,而无须kill(d_pid, SIGKILL)?
关于@Async注解所起线随着线退出退出的问题的分析
一、@Async代码示例: AbstractTask.java public abstract class AbstractTask { private static Random random = new Random(); public void doTaskOne() throws Exception { System.out.println(&amp;amp;amp;amp;amp;quot;开始做任务一...
检测退出的方法
给出<em>程</em>序实例和文档如何获得<em>子</em><em>进<em>程</em></em><em>退出</em>的时机。
退出的办法
自我笔记: 1.定义全局变量static BOOL m_bExit=0;2.定义虚构函数 ~Cscl配置opencvDlg3.while改写:while(!m_bExit)4.写析构函数 m_bExit=1; DWORD dwRes = WaitForSingleObject(hThread,15000);//<em>等待</em>15秒
退出引发的疑惑
请问,我在利用sigaction时设置了sa_flags标志为SA_NOCLDWAIT,且安装信号为SIGCHLD后测试wait返回值。发现在<em>子</em><em>进<em>程</em></em><em>退出</em>后wait并不是返回-1,而是<em>子</em><em>进<em>程</em></em>的id号;但是如若在wait前sleep一段时间后wait返回值方为-1。不知是何缘故?还请各位帮忙解答。谢谢!
退出的捕捉问题
//一下<em>程</em>序怎么只能捕捉到第一个<em>子</em><em>进<em>程</em></em>的<em>退出</em>,后面的就无法捕捉到 rn//有什么办法 rnrn#include rn#include rnrnvoid add_fork(int signo) rn rnrnpid_t pid; rnint stat; rnprintf("<em>退出</em><em>进<em>程</em></em>\n"); rnpid=waitpid(-1,&stat,WNOHANG); rnrnreturn; rn rnmain() rn rnsignal(SIGCHLD,add_fork); rnwhile(1) rn rnif (fork()==0) rn rnprintf("%d process run....",getpid()); rnsleep(4); rnexit(0); rn rnsleep(2); rn rnrnrn
退出open
我最近在学习<em>进<em>程</em></em>间的FIFO通信,下面的代码中111111111已经打印了,但是222222222和333333333都没有打印,很奇怪,望各位大神指点。rnint main()rnrn pid_t pid;rn char *path = "./file.fifo";rnrn if((pid = fork()) == 0) // clildrn int fdfifo, fd;rn int nread;rn char buf[BUF_LEN] = 0 ;rnrn mkfifo(path, 0777); rnrn printf("111111111\n");rnrn if((fdfifo = open(path, O_WRONLY))) == -1) rn printf("22222222\n");rn rn printf("333333333333\n");rnrn if((fd = open("./fifo.c", O_RDONLY)) == -1)rn err_exit(1, "open ./fifo.c");rnrn while((nread = read(fd, buf, BUF_LEN - 1)) > 0) rn printf("%s", buf);rn memset(buf, 0, BUF_LEN);rn rn else if(pid > 0) // parentrn exit(0);rn rnrn
怎样结束
大家好,我刚接触VC开发。遇到一个问题,如下:请大家给点建议。rnrn我做的是对话框<em>程</em>序,在按钮消息响应中创建线<em>程</em>,并开始执行处理。rnvoid StartButtonClick()rnrn HANDLE hThread = (HANDLE)_beginthreadex(NULL,0,CmdThread,NULL,0,NULL);rn CloseHandle(hThread);rnrnrn上面的线<em>程</em>函数CmdThread中,我通过匿名管道创建了cmd.exe<em>进<em>程</em></em>,用此<em>进<em>程</em></em>来执行批处理文件,rn因为在执行过<em>程</em>中可能<em>会</em>多次按下按钮,多次执行后,发现有很多cmd.exe<em>进<em>程</em></em>起来后没有清除。rn我想问的事,怎么样处理能干净的清理这些没有的<em>进<em>程</em></em>。(我的目的是当按钮按下时,去执行一个批处理,因为不要显示命令行rn的窗口,所以我选择了创建cmd<em>进<em>程</em></em>的匿名管道来实现,而没有用Winexec和system).rn如果要达到这个目的,请问还有没有其他更好的方案。rn
请问如何结束???????
我想<em>结束</em>掉一个<em>进<em>程</em></em>,可它说该<em>进<em>程</em></em>是(第2个)<em>进<em>程</em></em>的<em>子</em><em>进<em>程</em></em>,然后我想<em>结束</em>(第2个)<em>进<em>程</em></em>的时候,它又说该<em>进<em>程</em></em>是(第3个)<em>进<em>程</em></em>的<em>子</em><em>进<em>程</em></em>,谁知道到底该怎么办?????
如何安全结束
在我的<em>程</em>序中我用CreateProcess调用了<em>子</em><em>进<em>程</em></em>,其中能得到该<em>子</em><em>进<em>程</em></em>的句柄。但是每当关闭父<em>进<em>程</em></em>时,<em>子</em><em>进<em>程</em></em>并不被<em>结束</em>,如果响应父<em>进<em>程</em></em>WM_QUIT消息,在响应函数里调用ExitProcess(UINT nExitCode),它并不带<em>进<em>程</em></em>句柄参数,好像无法<em>结束</em>指定<em>进<em>程</em></em>,用TerminateProcess(UINT nExitCode, HANDLE hProcess)又极为不安全(无法<em>结束</em><em>进<em>程</em></em>调用的DLL).rn另外在父<em>进<em>程</em></em>的DestroyWindow函数里,如下调用rn HWND hSpectrum;rn hSpectrum=NULL;rn hSpectrum=::FindWindow(NULL,"曲线浏览&谱分析");rn if(hSpectrum)rn ::SendMessage(hSpectrum,WM_CLOSE,0,0);rn也并不能在父<em>进<em>程</em></em>关闭时,关闭窗口标题为"曲线浏览&谱分析"的窗口。rn不知哪位大虾能指点一二,在下不胜感激
如何正确结束
用CreateProcess创建了一个<em>子</em><em>进<em>程</em></em>,不显示命令行窗口,想中途终止,发现用TerminateProcess然后WaitForSingleObject,<em>子</em><em>进<em>程</em></em>能够正确<em>退出</em>,但是得到的结果不对。rn命令行窗口中单独运行<em>子</em><em>进<em>程</em></em>(参数相同),可以用q<em>退出</em>,可以ctrl+c<em>退出</em>。rnTerminateProcess和ctrl+c的效果不一样的啊,<em>子</em><em>进<em>程</em></em>没有消息循环,命令行<em>程</em>序。rn请教应该如何正确的<em>结束</em><em>子</em><em>进<em>程</em></em>。
线等待所有线完成后执行
<em>主</em>线<em>程</em><em>等待</em>所有<em>子</em>线<em>程</em>完成后<em>再</em>执行
监控异常退出
用C#实现的 <em>进<em>程</em></em>间通信小例<em>子</em> 监控<em>子</em><em>进<em>程</em></em>异常<em>退出</em>的示例
处理退出
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;signal.h&amp;gt; #include &amp;lt;unistd.h&amp;gt; #include &amp;lt;sys/types.h&amp;gt; #include &amp;lt;sys/wait.h&amp;gt; void handle_signal(int sigNum) { pid_t pid; // 当用fork启动一个新的<em>子</em><em>进<em>程</em></em>...
问个很简单的问题,如何让线等待其它线退出退出
<em>程</em>序是基于控制台的,<em>主</em>线<em>程</em>完成了自己的工作后启动另一个线<em>程</em>,启动完这个线<em>程</em>后<em>主</em>线<em>程</em>就没事可做了,这种情况下,如何让<em>主</em>线<em>程</em>等其它线<em>程</em>工作完成后<em>再</em><em>退出</em>呢?rnrn<em>主</em>线<em>程</em>负责一些信息的输出
线性代数习题答案(同济版)下载
线性代数习题答案,解析详细,看后就明白,很有用的, 相关下载链接:[url=//download.csdn.net/download/jialeqi/2216584?utm_source=bbsseo]//download.csdn.net/download/jialeqi/2216584?utm_source=bbsseo[/url]
js 模拟 linux下载
js 模拟 linux http://bellard.org/jslinux/ 相关下载链接:[url=//download.csdn.net/download/cathleen0930/4661238?utm_source=bbsseo]//download.csdn.net/download/cathleen0930/4661238?utm_source=bbsseo[/url]
Linux程序设计+中文第4版.part07.rar下载
《Linux程序设计(第4版)》讲述了Linux系统及其他IJNIX风格的操作系统上的程序开发,主要内容包括标准Linux c语言函数库和由不同的Linux或UNIX标准指定的各种工具的使用方法,大多数标准Linux开发工具的使用方法,通过DBM和MySQL数据库系统存储Linux中的数据,为x视窗系统建立图形化用户界面等。《Linux程序设计(第4版)》通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。   《Linux程序设计(第4版)》适合Linux的初学者及希望利用Linux进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教 相关下载链接:[url=//download.csdn.net/download/handbeau/5695419?utm_source=bbsseo]//download.csdn.net/download/handbeau/5695419?utm_source=bbsseo[/url]
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制
我们是很有底线的