Skip to main content

Waitforexit c time out


Oi, estou desenvolvendo um aplicativo de console C que inicia uma linha de comando e obtém alguns dados através de outro comando (o que é irrelevante nesta discussão). Eventualmente, vou obter alguns dados na linha de comando e eu só preciso apenas da última linha disso. Eu usei o seguinte código: Process. StartInfo. FileName quotcmd. exequot Process. StartInfo. RedirectStandardInput true Process. StartInfo. RedirectStandardOutput true Eu usei Processo. StandardInput. WriteLine para escrever os comandos que eu preciso para o console. Mas se Process. StartInfo. RedirectStandardOutput é verdade, não estou obtendo a saída desejada usando a instrução Process. StandardOutput. ReadToEnd (). Split (n) Enquanto a opção ReadLine está funcionando bem e eu estou recebendo a primeira linha do texto exibido. Como sempre que os dados que eu consigo no console diferem, não consigo codificar qualquer tipo de ação específica de onde obter minha saída. Mesmo que eu coloquei um relógio na declaração Process. StandardOutput. ReadToEnd (). Split (n) Estou recebendo uma exceção de tempo limite de função. Por favor me ajude com esse problema. Quinta-feira, 07 de agosto de 2008 5:44 AM Então copiei o código de Manjus. Myprocesss quotcmd. exequot. Primeiro, enviei o comando quotipconfigquot, com um readToEnd () Timed out. Tentou ler em blocos, falhou também. Tentou esperarForInputIddle (), mas esqueceu cmd sem interface gráfica, falhou também. Então eu precisava do cmd para terminar o fluxo se eu quisesse lê-lo. Ok então saia Então eu tentei enviar TODOS OS MEUS COMUNES, INCLUINDO primeiro o comando de saída, depois lendo. SIn. WriteLine (quotipconfigquot) sIn. WriteLine (quotipconfig allquot) sIn. WriteLine (quotexitquot) string strOutPut sOut. ReadToEnd () Funciona como um encanto. Meu ReadToEnd () retorna uma string em meio segundo, e eu obtive toda a informação que eu preciso. -) Isso poderia ser de alguma ajuda para você, Gauri O improvável que fazemos, o impossível demora um pouco mais. - Steven Parker Marcado como resposta por Jack 321 segunda-feira, 11 de agosto de 2008 5:44 AM quinta-feira, 07 de agosto de 2008 7:51 AM ReadToEnd () é capaz de causar impasse, especialmente quando você o codifica após um WaitForExit () ou envia Muita entrada. O processo está escrevendo sua saída para um buffer, esse buffer não é muito grande (2KB, eu acho). Você não lê o conteúdo deste buffer, digamos com o ReadLine (), o processo irá parar, esperando que o buffer seja esvaziado. O seu programa, por sua vez, será interrompido, pois WaitForExit () nunca retornará ou a chamada WriteLine () será interrompida, já que o processo não está mais a ler a entrada. Se esse for seu cenário, você precisará ler de forma assíncrona com BeginOutputReadLine (). Hans Passant. Marcado como resposta por Jack 321 segunda-feira, 11 de agosto de 2008 5:44 AM quinta-feira, 07 de agosto de 2008 12:13 PM Todas as respostas Você também precisa definir Process. StartInfo. UseShellExecute como falso. Marcado como resposta por Jack 321 segunda-feira, 11 de agosto de 2008 5:43 AM O que há acima é uma resposta padrão muito agradável, no entanto. Eu não acho que o quotcmdquot termina o fluxo. Não há nada enviado a partir do cmd-box para indicar que o fluxo está encerrado. Considere uma página da Web que você carrega, uma vez que o código html inteiro chegou ao seu PC, o fluxo está pronto. Mesmo com a leitura de um arquivo, uma vez que você alcançou o último personagem, o fluxo está pronto. No entanto, com cmd, o fluxo não é quotdonequot. Ele só espera uma nova entrada, então, se você der um outro comando, ele terá saída novamente. Hmm, eu pareço ter problemas para me expressar em inglês novamente, minhas desculpas. De qualquer forma, não penso que haja algo que você possa fazer para usar ReadToEnd () em um cmd-output-stream, a menos que você envie o comando quotexitquot. Você tentou combinar o readline () com um. Uma análise da linha (ou seja, você obtém linhas vazias) ou b. O comando Process. WaitForIddleInput () O improvável que fazemos, o impossível demora um pouco mais. - Steven Parker quinta-feira, 07 de agosto de 2008 7:35 AM Caso você esteja executando o processo cmd. Lembre-se de escrever quotEXITquot no fluxo de entrada Quinta-feira, 07 de agosto de 2008 7:51 AM Então copiei o código do Manjus. Myprocesss quotcmd. exequot. Primeiro, enviei o comando quotipconfigquot, com um readToEnd () Timed out. Tentou ler em blocos, falhou também. Tentou esperarForInputIddle (), mas esqueceu cmd sem interface gráfica, falhou também. Então eu precisava do cmd para terminar o fluxo se eu quisesse lê-lo. Ok então saia Então eu tentei enviar TODOS OS MEUS COMUNES, INCLUINDO primeiro o comando de saída, depois lendo. SIn. WriteLine (quotipconfigquot) sIn. WriteLine (quotipconfig allquot) sIn. WriteLine (quotexitquot) string strOutPut sOut. ReadToEnd () Funciona como um encanto. Meu ReadToEnd () retorna uma string em meio segundo, e eu obtive toda a informação que eu preciso. -) Isso poderia ser de alguma ajuda para você, Gauri O improvável que fazemos, o impossível demora um pouco mais. - Steven Parker Marcado como resposta por Jack 321 segunda-feira, 11 de agosto de 2008 5:44 AM quinta-feira, 07 de agosto de 2008 7:51 AM ReadToEnd () é capaz de causar impasse, especialmente quando você o codifica após um WaitForExit () ou envia Muita entrada. O processo está escrevendo sua saída para um buffer, esse buffer não é muito grande (2KB, eu acho). Você não lê o conteúdo deste buffer, digamos com o ReadLine (), o processo irá parar, esperando que o buffer seja esvaziado. O seu programa, por sua vez, será interrompido, pois WaitForExit () nunca retornará ou a chamada WriteLine () será interrompida, já que o processo não está mais a ler a entrada. Se esse for seu cenário, você precisará ler de forma assíncrona com BeginOutputReadLine (). Hans Passant. Marcado como resposta por Jack 321 segunda-feira, 11 de agosto de 2008 5:44 da manhã Quinta-feira, 07 de agosto de 2008 12:13 PM A Microsoft está realizando uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, a pesquisa on-line será apresentada quando você deixar o site Msdn. Você gostaria de participar? Qual permanente é WaitForExit (). Quero dizer, existe algo que uma alternativa pode fazer para quebrar a espera, caso contrário, eu executarei o meu segmento em uma função separada e controlá-lo por variáveis ​​globais. Razão - um segmento CMD. EXE, com um aplicativo de console em execução, do qual precisamos cancelar antes do tópico em execução. Aqui está o que temos: ProcessStartInfo psi novo ProcessStartInfo (quotCMD. EXEquot, consulta) psi. UseShellExecute useShellExec psi. RedirectStandardOutput stdout psi. CreateNoWindow noWindow hbProc novo Processo () hbProc Process. Start (psi) hbProc. WaitForExit () Bem, você poderia Use: enquanto (hbProc. WaitForExit (someTimeout)) se (ShouldCancel) quebrar On Sep 19, 5:15 am, quotMarc Gravellquot ltmarc. grav. Gt escreveu: gt Bem, você poderia usar: gt gt enquanto (hbProc. WaitForExit (someTimeout)) gt se (ShouldCancel) romper gt gt gt gt Marc (nota, não há motivo para chamar o novo processo () eo processo. Start (psi) Ou você poderia usar: hbProc new Process () hbProc. EnableRaisingEvents true hbProc. Exited new EventHandler (functionToCallAfterProcesit) hbProc. StartInfo psi hbProc. Start () outro thread - on quer cancelar evento: hbProc - EventHandler novo ( FunctionToCallAfterProcesit) Em ambos os casos, apenas esteja ciente da condição de corrida potencial entre o processo que sai e o desejo de cancelar a espera. Em 19 de setembro, 4:11 am, Alistair George ltnon. Xtra. co. nzgt escreveu: gt Como permanente é WaitForExit (). Quero dizer, há algo que uma alternativa gt pode fazer para quebrar a espera, caso contrário, eu executarei meu thread gt em uma função separada e controlá-lo por variáveis ​​globais. Gt Reason - um segmento CMD. EXE, com um console Aplicação em execução, da qual gt precisamos cancelar antes do segmento que está executando seu curso E. Gt Aqui está o que temos: gt ProcessStartInfo psi new gt ProcessStartInfo (quotCMD. EXEquot, consulta) gt psi. UseShellExecute useShellExec gt psi. RedirectStandardOutput stdout gt psi. CreateNoWindow noWindow gt hbProc novo Processo () gt hbProc Process. Start (psi) gt HbProc. WaitForExit () gt gt Obrigado, gt Alistair. Você pode matar o thread executando WaitForExit () ou usar a sobrecarga que permite especificar um timeout bool WaitForExit (int msToWait). Se você executá-lo em um segmento separado e matá-lo, você receberá uma exceção interrompida. Você pode querer certificar-se de que o processo que você iniciou ainda não está sendo executado (se for, mate-o). Gt Você pode matar o segmento executando WaitForExit () ou usar a sobrecarga gt que permite especificar um timeout bool WaitForExit (int gt msToWait). Se você executá-lo em um fio separado e matá-lo, você vai obter uma exceção interrompida. Você pode querer certificar-se de que o processo gt que você iniciou ainda não está sendo executado (se for, mate-o). Gt Agradeço aos caras as sugestões que são úteis. Aconselhará qual opção funcionou melhor. Al. Copyright cópia 2005-2017, TechTalkz. Todos os direitos reservados.

Comments

Popular posts from this blog

How to do option trading in nifty no Brasil

Método simples para negociar negociação de opções Nifty Um dos meus métodos de negociação de opções intradiárias é. Usando o método WMA (média móvel ponderada). Vou comprar uma opção de compra ou opção de compra (no Nifty Bank Nifty) se houver uma grande diferença entre o preço de negociação e a WMA. Por exemplo, se uma opção de compra for negociada em Rs 100 lot (preço premium) e se o WMA estiver em Rs 120. vou comprar a opção de chamada com o alvo Rs 115 e parar a perda Rs 90. Mesmo no caso da opção de venda . Eu não me aventuro em uma negociação se o preço de negociação e a WMA estiverem perto um do outro. Este é apenas um método de negociação intradiário e NÃO é transferido para o próximo dia de negociação. Este não é método de negociação preciso, mas ajuda às vezes. Qual comprar. Uma opção de compra ou opção de compra para negociação intradiária. Se você está confuso entrando em uma opção de negociação em ações ou em índice, esta resposta o ajudaria até certo ponto. Esta é uma pur...

Forex daily chart moving average no Brasil

Forex: The Moving Average MACD Combo Em teoria, a negociação de tendências é fácil. Tudo o que você precisa fazer é continuar comprando quando você vê o preço subir mais alto e continuar vendendo quando você vê que ele é mais baixo. Na prática, no entanto, é muito mais difícil fazer isso com sucesso. O maior medo para os comerciantes de tendências está entrando em uma tendência muito tarde, ou seja, no ponto de exaustão. No entanto, apesar dessas dificuldades, o comércio de tendências é provavelmente um dos estilos de negociação mais populares, porque, quando uma tendência se desenvolve, seja de curto ou longo prazo, pode durar horas, dias e até meses. Aqui, cubra uma estratégia que o ajudará a entrar em uma tendência no momento certo com níveis claros de entrada e saída. Esta estratégia é chamada de MACD médio móvel. (Para a leitura de fundo, veja A Primer On The MACD.) Visão geral A estratégia combinada MACD envolve o uso de dois conjuntos de médias móveis (MA) para a configuração: O...

Forex forecast eurnok

Previsão de Forex. Previsão de taxas para GBP, USD, EUR, AUD, CAD, NOK Esta manhã, o índice de inflação CPI do Reino Unido ultrapassou as expectativas dos analistas, saindo em um 4,5 anualizado, seu nível mais alto desde o outono de 2008. No entanto, a Sterling não conseguiu avançar contra O UAD e o EUR, apesar deste lançamento aparentemente positivo, que é um mau sinal para os investidores que possuem ativos denominados em libras esterlinas. PERSPECTIVAS PRÓXIMAS NEUTRAS A NEGATIVAS. US DOLLAR A taxa de câmbio do Dólar da Libra (GBPUSD) é 1.6194. Esta tarde viu a divulgação de dados altamente negativos do setor de construção dos EUA, com os índices de habitação e os números de permissões de construção, ambos saindo significativamente pior do que as expectativas. O Greenback ainda conseguiu se manter no mercado, mostrando que o apetite de risco global está em declínio. PERSPECTIVAS PRÓXIMAS NEUTRAS PARA POSITIVAS. EURO A taxa de câmbio do euro da libra (GBPEUR) é 1.1434 O euro negociou...