Monday 3 July 2017

Redireccionar O Padrão De Saída De Saída Processstartinfo Waitforexit


Elina: obrigado pela sua resposta. Há algumas notas na parte inferior deste MSDN doc (msdn. microsoften-uslibraryhellip) que alertam sobre potenciais bloqueios se você ler ao final de ambos os fluxos stdout e stderr redirecionados de forma síncrona. É difícil dizer se sua solução é suscetível a esse problema. Além disso, parece que você está enviando o process39 stdoutstderr output novamente na entrada. Por quê. ) Ndash Matthew Piatt 26 de setembro 16 às 4:42 Esta é uma solução mais moderna, Tarefa paralela (TPL), baseada em solução para 4.5 e acima. Exemplo de uso Implementação respondida 5 de outubro 16 às 10:54 Eu acho que isso é uma abordagem simples e melhor (não precisamos de AutoResetEvent): respondido 14 de junho 12 às 14:29 Verdadeiro, mas não deveria estar fazendo. FileName Path quotggsci. exequot quot lt Obeycommand. txtquot para simplificar o seu código também Ou talvez algo equivalente a quotggsci. exequot do quot do comando quotecho se você realmente não quiser usar um arquivo obeycommand. txt separado. Ndash Amit Naidu Jun 4 13 at 22:03 Sua solução não precisa de AutoResetEvent, mas você pesquisa. Quando você faz uma pesquisa em vez de usar o evento (quando está disponível), você está usando a CPU sem motivo e isso indica que você é um programador ruim. Sua solução é realmente ruim quando comparada com a outra usando AutoResetEvent. (Mas não te dou -1 porque voce tentou ajudar). Ndash Eric Ouellet Nov 7 14 às 18:38 Eu estava tendo o mesmo problema, mas a razão era diferente. No entanto, isso aconteceria no Windows 8, mas não no Windows 7. A seguinte linha parece ter causado o problema. A solução era NÃO desativar UseShellExecute. Agora recebi uma janela popup do Shell, que é indesejável, mas muito melhor do que o programa esperando que nada de particular aconteça. Então eu adicionei o seguinte trabalho para isso: agora, o único problema que me incomoda é o porquê isso está acontecendo no Windows 8, em primeiro lugar. Respondeu 13 de janeiro 15 às 10:35 Tentei fazer uma aula que resolva seu problema usando a leitura de fluxo assíncrono, levando em conta Mark Byers, Rob, Stevejay responde. Ao fazê-lo, percebi que existe um bug relacionado à leitura assíncrona do fluxo de saída do processo. Você não pode fazer isso: você receberá System. InvalidOperationException. StandardOut não foi redirecionado ou o processo ainda não começou. Então, você deve iniciar a saída assíncrona lida depois que o processo for iniciado: fazendo isso, faça uma condição de corrida porque o fluxo de saída pode receber dados antes de configurá-lo como assíncrono: então, algumas pessoas podem dizer que você só precisa ler o fluxo antes de você Configure-o para assíncrono. Mas o mesmo problema ocorre. Haverá uma condição de corrida entre a leitura síncrona e configurará o fluxo em modo assíncrono. Não há como obter uma leitura assíncrona segura de um fluxo de saída de um processo da maneira atual Process e ProcessStartInfo foi projetado. Você provavelmente está melhor usando a leitura assíncrona, como sugerido por outros usuários para o seu caso. Mas você deve estar ciente de que você pode perder algumas informações devido à condição de corrida. Eu vou entrar na máquina remota do linux com a ajuda do putty. ProcessStartInfo pInfo novo ProcessStartInfo () pInfo. Argumentos quot-ssh prateek10.202.167.34 - pw passwordquot pInfo. FileName quotC: UsuáriosprateekDesktopPUTTY. EXEquot Processo p novo Processo () p. StartInfo pInfo Depois desta sessão de massa de massa começar, então preciso fazer o login como SuperUser (webAdmin) e forneça uma senha. Como posso fornecer ou alterar UserName e senha em pInfo. Arguments após o login como prateek (userName). Segunda-feira, 01 de outubro de 2012 1:18 PM Olá, você precisa usar os fluxos StandardInput e StandardOutput para ler e escrever conteúdo para o processo: Espero que isso ajude, proposto como resposta por Jason Dot Wang Microsoft contingent staff Wednesday, October 03, 2012 5:55 AM Marcado como resposta por Jason Dot Wang Microsoft contingente pessoal quarta-feira, 10 de outubro de 2012 2:44 AM segunda-feira, 01 de outubro de 2012 1:25 PM Olá, como exemplo de como interagir com inputoutputerror em aplicativos de console, você pode Use o seguinte código: espere que isso o ajude e se você ainda tiver dúvidas, avise-me. Marcado como resposta por PrateekThakur quarta-feira, 03 de outubro de 2012 5:25 AM terça-feira, 02 de outubro de 2012 12:52 PM Todas as respostas Olá, você precisa usar os fluxos StandardInput e StandardOutput para ler e escrever conteúdo no processo: Espero que isso ajude Proposta como resposta por Jason Dot Wang Microsoft contingente quarta-feira, 03 de outubro de 2012 5:55 Marcado como resposta por Jason Dot Wang Microsoft contingentes quarta-feira, 10 de outubro de 2012 2:44 AM segunda-feira, 01 de outubro de 2012 1:25 PM Uma questão é que, quando eu dou senha na linha separada, não a aceito, ele ainda está solicitando senha no console. Processo p novo Processo () p. StartInfo pInfo p. StartInfo. UseShellExecute falso p. StartInfo. RedirectStandardInput true StreamWriter myStreamWriter p. StandardInput myStreamWriter. WriteLine (quotsudo su - webadminquot) myStreamWriter. WriteLine (quotpasswordquot) De que forma podemos fornecer senha com StandardIn Obrigado pela sua ajuda. Segunda-feira, 01 de outubro de 2012 2:20 PM Olá, primeiro você pode ler o StandardOutput para obter o texto quotPassword: quot, então você sabia que o aplicativo está pronto para ler a senha. Depois disso, use o StandardInput para escrever a senha. Segunda-feira, 01 de outubro de 2012 2:27 PM O problema é quando eu configurou o RedirectStandardOutput como verdadeiro, ele não executa o processo até o fim, entre eles, como por exemplo: pInfo. Arguments quot-ssh prateek10.202.104.20 - pw passwordquot pInfo. FileName quotC: UsuáriosprateekDesktopPLINK. EXEquot Processo p novo Processo () p. StartInfo pInfo p. StartInfo. UseShellExecute falso p. StartInfo. RedirectStandardInput true p. StandardInput. WriteLine (quotsudo su - webadminquot) Mas quando RedirectStandardOutput para true, ou seja, pInfo. Arguments Quot-ssh prateek10.202.104.20 - pw passwordquot pInfo. FileName quotC: UsuáriosprateekDesktopPLINK. EXEquot Processo p novo Processo () p. StartInfo pInfo p. StartInfo. UseShellExecute falso p. StartInfo. RedirectStandardInput true p. StandardInput. WriteLine (quotsudo su - Webadminquot) Isso é esperar por tempo indeterminado. Então, como posso obter o quotPassword: quot text, quando esse processo está parando no intervalo por tempo indefinido

No comments:

Post a Comment